'프로그램 사용/wayland'에 해당되는 글 38건

  1. 2022.01.17 weston client 메모리 누수
  2. 2022.01.13 wayland buffer
  3. 2022.01.06 wayland client example
  4. 2022.01.06 weston window transform
  5. 2022.01.05 weston-screenshooter 실행에러
  6. 2022.01.04 weston 단축키
  7. 2022.01.03 weston.ini same-as on output section
  8. 2021.12.08 weston-image 와 cairo
  9. 2021.12.03 rpi3b 64bit weston
  10. 2021.12.02 wayland screen share
프로그램 사용/wayland2022. 1. 17. 17:36

누수는 누수인데 늘어나진 않는 누수인 것 같아서 일단 패스.

 

[링크 : https://gitlab.freedesktop.org/wayland/wayland/-/merge_requests/18]

'프로그램 사용 > wayland' 카테고리의 다른 글

wayland wl_fixed_t 변수  (0) 2022.02.07
wayvnc  (0) 2022.01.24
wayland buffer  (0) 2022.01.13
wayland client example  (0) 2022.01.06
weston window transform  (0) 2022.01.06
Posted by 구차니
프로그램 사용/wayland2022. 1. 13. 10:13

wayland screenshooter에서 shared memory를 이용하여

캡쳐한 이미지를 공유하는데 해당 내용에 대한 정리가 잘되어 있어서 링크!

 

[링크 : https://nemoux00.wordpress.com/2014/02/13/wayland-버퍼-관리/]

[링크 : https://wayland-book.com/surfaces/shared-memory.html]

'프로그램 사용 > wayland' 카테고리의 다른 글

wayvnc  (0) 2022.01.24
weston client 메모리 누수  (0) 2022.01.17
wayland client example  (0) 2022.01.06
weston window transform  (0) 2022.01.06
weston-screenshooter 실행에러  (0) 2022.01.05
Posted by 구차니

surface (그려질 영역)

shell surface (창 최소화,최대,닫기 창이름 등 셸 디자인 영역)

근데 git에 있는 cilent 예제에서는 window.c로 랩핑해놔서 아래 소스랑 비교해서 분석하는게 쉽지 않다.

 

[링크 : https://jan.newmarch.name/Wayland/ProgrammingClient/]

'프로그램 사용 > wayland' 카테고리의 다른 글

weston client 메모리 누수  (0) 2022.01.17
wayland buffer  (0) 2022.01.13
weston window transform  (0) 2022.01.06
weston-screenshooter 실행에러  (0) 2022.01.05
weston 단축키  (0) 2022.01.04
Posted by 구차니

wayland 에서 output 버퍼를 뒤집는거라

정상적으로 작동하는 느낌이 아니라

데스크 탑 셀 부분까지 강제로 뒤집어서 오작동 하는 느낌?

fullscreen 예제에서는 정상작동하지만 데스크 탑 셀이 없다보니

데스크탑 셀이 있으면 정상적으로 작동 안하는 걸지도?

 

int
window_get_buffer_transform(struct window *window);

void
window_set_buffer_transform(struct window *window,
    enum wl_output_transform transform);

 

normal
0 - no transform
90
1 - 90 degrees counter-clockwise
180
2 - 180 degrees counter-clockwise
270
3 - 270 degrees counter-clockwise
flipped
4 - 180 degree flip around a vertical axis
flipped_90
5 - flip and rotate 90 degrees counter-clockwise
flipped_180
6 - flip and rotate 180 degrees counter-clockwise
flipped_270
7 - flip and rotate 270 degrees counter-clockwise

[링크 : https://wayland.freedesktop.org/docs/html/apa.html#protocol-spec-wl_output-enum-transform]

'프로그램 사용 > wayland' 카테고리의 다른 글

wayland buffer  (0) 2022.01.13
wayland client example  (0) 2022.01.06
weston-screenshooter 실행에러  (0) 2022.01.05
weston 단축키  (0) 2022.01.04
weston.ini same-as on output section  (0) 2022.01.03
Posted by 구차니

weston-screenshooter를 이용하여 직접 명령어 라인에서 캡쳐를 해보려하면 아래와 같이 에러가 발생한다.

$ weston-screenshooter
weston_screenshooter@5: error 0: screenshooter failed: permission denied. Debug protocol must be enabled

 

weston --debug를 통해 실행하라는데

$ weston --debug

[링크 : https://blog.lancitou.net/build-and-run-weston-on-ubuntu/]

[링크 : https://www.collabora.com/news-and-blog/blog/2019/04/24/weston-debugging-and-tracing-on-the-fly/]

 

시리얼 콘솔을 통해 접속을 해서 그런지 실행이 안된다.

# weston --debug
Date: 2022-01-13 KST
[11:49:13.239] weston 9.0.0
               https://wayland.freedesktop.org
               Bug reports to: https://gitlab.freedesktop.org/wayland/weston/issues/
               Build: lf-5.10.35-2.0.0-rc2+
[11:49:13.239] Command line: weston --debug
[11:49:13.239] OS: Linux, 5.10.35-lts-5.10.y+g6369370afcb5, #1 SMP PREEMPT Tue Dec 14 09:29:50 UTC 2021, aarch64
[11:49:13.239] Using config file '/etc/xdg/weston/weston.ini'
WARNING: debug protocol has been enabled. This is a potential denial-of-service attack vector and information leak.
[11:49:13.239] Output repaint window is 16 ms maximum.
[11:49:13.240] Loading module '/usr/lib/libweston-9/drm-backend.so'
[11:49:13.244] initializing drm backend
[11:49:13.244] logind: failed to get session seat
[11:49:13.245] logind: cannot setup systemd-logind helper (-61), using legacy fallback
[11:49:13.245] <stdin> not a vt
[11:49:13.245] if running weston from ssh, use --tty to specify a tty
[11:49:13.245] fatal: drm backend should be run using weston-launch binary, or your system should provide the logind D-Bus API.
[11:49:13.245] fatal: failed to create compositor backend
Internal warning: debug scope 'drm-backend' has not been destroyed.

 

weston 실행 스크립트 에서

(내가 가진 시스템에서는 다음 경로에 존재함. /etc/systemd/system/graphical.target.wants/weston.service)

 Service 섹션 ExecStart 의 가장 마지막에 --debug를 추가해주면 문제없이 실행된다.

 

다만.. 경고가 무시무시 하구만.

 

 

+

의외로 별 내용이 없는 함수인데 얘를 실행하면 debug protol must be enabled 에러가 발생한다.

wl_display_roundtrip - Block until all pending request are processed by the server.
int wl_display_roundtrip(struct wl_display *display)
display
The display context object
Returns:
The number of dispatched events on success or -1 on failure
This function blocks until the server has processed all currently issued requests by sending a request to the display server and waiting for a reply before returning.

This function uses wl_display_dispatch_queue() internally. It is not allowed to call this function while the thread is being prepared for reading events, and doing so will cause a dead lock.

Note: This function may dispatch other events being received on the default queue.

[링크 : https://wayland.freedesktop.org/docs/html/apb.html]

[링크 : https://www.systutorials.com/docs/linux/man/3-wl_display_roundtrip/]

 

compositor/weston-screenshooter.c 에서 bind_shooter() 에서 해당 에러를 출력하고

bind_shooter()는 screenshooter_create() 에서 호출이 되고

static void
bind_shooter(struct wl_client *client,
     void *data, uint32_t version, uint32_t id)
{
struct screenshooter *shooter = data;
struct wl_resource *resource;
bool debug_enabled =
weston_compositor_is_debug_protocol_enabled(shooter->ec);

resource = wl_resource_create(client,
      &weston_screenshooter_interface, 1, id);

if (!debug_enabled && !shooter->client) {
wl_resource_post_error(resource, WL_DISPLAY_ERROR_INVALID_OBJECT,
       "screenshooter failed: permission denied. "\
       "Debug protocol must be enabled");
return;
} else if (!debug_enabled && client != shooter->client) {
wl_resource_post_error(resource, WL_DISPLAY_ERROR_INVALID_OBJECT, "screenshooter failed: permission denied.");
return;
}

wl_resource_set_implementation(resource, &screenshooter_implementation, data, NULL);
}

WL_EXPORT void
screenshooter_create(struct weston_compositor *ec)
{
struct screenshooter *shooter;

shooter = zalloc(sizeof *shooter);
if (shooter == NULL)
return;

shooter->ec = ec;

shooter->global = wl_global_create(ec->wl_display,  &weston_screenshooter_interface, 1,   shooter, bind_shooter);
weston_compositor_add_key_binding(ec, KEY_S, MODIFIER_SUPER,  screenshooter_binding, shooter);
weston_compositor_add_key_binding(ec, KEY_R, MODIFIER_SUPER,  recorder_binding, shooter);

shooter->destroy_listener.notify = screenshooter_destroy;
wl_signal_add(&ec->destroy_signal, &shooter->destroy_listener);
}

 

screenshooter_create() 는 desktop-shell/shell.c의 init 함수에서 호출하는데

WL_EXPORT int
wet_shell_init(struct weston_compositor *ec,
       int *argc, char *argv[])
{
screenshooter_create(ec);

shell_add_bindings(ec, shell);

shell_fade_init(shell);

clock_gettime(CLOCK_MONOTONIC, &shell->startup_time);

return 0;
}

 

이미 등록되어 있어서 새로 등록할 수 없다고 나오는 건진 애매하네..

위에서 wl_create() 하면서 이미 생성된 것에 bind 하려고 하다 보니 에러가 나는 것 같은데

bind 여부를 wl_display_roundtrip() 에서 하진 않을 것 같고 지연된 에러라고 보기에는

딜레이를 주고 실행해도 딱 그 위치에서 나오니 애매하네..

static void
handle_global(void *data, struct wl_registry *registry,
      uint32_t name, const char *interface, uint32_t version)
{
static struct screenshooter_output *output;
struct screenshooter_data *sh_data = data;

if (strcmp(interface, "wl_output") == 0) {
output = xmalloc(sizeof *output);
output->output = wl_registry_bind(registry, name,
  &wl_output_interface, 1);
wl_list_insert(&sh_data->output_list, &output->link);
wl_output_add_listener(output->output, &output_listener, output);
} else if (strcmp(interface, "wl_shm") == 0) {
sh_data->shm = wl_registry_bind(registry, name, &wl_shm_interface, 1);
} else if (strcmp(interface, "weston_screenshooter") == 0) {
sh_data->screenshooter = wl_registry_bind(registry, name,  &weston_screenshooter_interface,  1);
}
}

static const struct wl_registry_listener registry_listener = {
handle_global,
handle_global_remove
};

'프로그램 사용 > wayland' 카테고리의 다른 글

wayland client example  (0) 2022.01.06
weston window transform  (0) 2022.01.06
weston 단축키  (0) 2022.01.04
weston.ini same-as on output section  (0) 2022.01.03
weston-image 와 cairo  (0) 2021.12.08
Posted by 구차니

super(win) + R은 녹화한다는데

wcap이 16byte짜리만 생겨서 정상적으로 작동하는질 모르겠다..

 

[링크 : https://stackoverflow.com/questions/23856154/how-to-take-screenshot-under-wayland]

[링크 : https://wiki.archlinux.org/title/Weston]

'프로그램 사용 > wayland' 카테고리의 다른 글

weston window transform  (0) 2022.01.06
weston-screenshooter 실행에러  (0) 2022.01.05
weston.ini same-as on output section  (0) 2022.01.03
weston-image 와 cairo  (0) 2021.12.08
rpi3b 64bit weston  (0) 2021.12.03
Posted by 구차니

되는게 없냐 -_-

 

[링크 : https://man.archlinux.org/man/weston-drm.7.en]

 

it looks like you are doing the right thing with weston.ini. I'm guessing that your hardware does not support what you want though. Support for shared CRTC clone mode in hardware is rare and might be limited to just two very particular connectors.

[링크 : https://www.mail-archive.com/wayland-devel@lists.freedesktop.org/msg41071.html]

[링크 : https://www.mail-archive.com/wayland-devel@lists.freedesktop.org/msg41078.html]

 

[링크 : https://community.nxp.com/.../Dual-display-extended-mode-with-weston-and-IMX8MQEVK-board/.../1207565]

'프로그램 사용 > wayland' 카테고리의 다른 글

weston-screenshooter 실행에러  (0) 2022.01.05
weston 단축키  (0) 2022.01.04
weston-image 와 cairo  (0) 2021.12.08
rpi3b 64bit weston  (0) 2021.12.03
wayland screen share  (0) 2021.12.02
Posted by 구차니
프로그램 사용/wayland2021. 12. 8. 17:20

예제 프로그램이 있어서 bmp를 넣어봤는데 모르는 헤더라고 배째심 -_-

dog.bmp: unrecognized file header 0x42 0x4d 0x76 0x88

[링크 : https://wiki.st.com/stm32mpu/wiki/Wayland_Weston_overview#Display_some_images]

 

함수를 추적해보니 cairo 라는게 나오는데, vector 그래픽용인가?

윈도우 비트맵을 surface에 뿌리는걸 시도한 내용이 있는 것을 보면 수정하면 가능할지도?

[링크 : https://stackoverflow.com/questions/14738245/is-it-possible-to-draw-a-windows-bitmap-to-a-cairo-surface]

[링크 : http://www.rforge.net/Cairo/index.html]

'프로그램 사용 > wayland' 카테고리의 다른 글

weston 단축키  (0) 2022.01.04
weston.ini same-as on output section  (0) 2022.01.03
rpi3b 64bit weston  (0) 2021.12.03
wayland screen share  (0) 2021.12.02
wayland 와 weston 문서  (0) 2021.12.02
Posted by 구차니
프로그램 사용/wayland2021. 12. 3. 12:37

weston-launch로 실행시

 

기본예제로 들어있는 weston.ini 적용시

 

스샷은 /dev/fb0를 해봤자 의미없고, super+s를 하면 png로 떨어진다.

[링크 : https://wiki.archlinux.org/title/Weston]

'프로그램 사용 > wayland' 카테고리의 다른 글

weston.ini same-as on output section  (0) 2022.01.03
weston-image 와 cairo  (0) 2021.12.08
wayland screen share  (0) 2021.12.02
wayland 와 weston 문서  (0) 2021.12.02
wayland  (0) 2021.11.29
Posted by 구차니
프로그램 사용/wayland2021. 12. 2. 17:16

RDP로 공유하는 방법이 기본예제로 구현되어 있나?

 

[링크 : https://manpages.ubuntu.com/manpages/focal/en/man5/weston.ini.5.html#screen-share%20section]

[링크 : https://community.nxp.com/t5/i-MX-Processors/i-MX8-How-to-share-screen-on-Weston/td-p/1333875]

 

+ 2021.12.03

rpi3b 에서 64bit로 깔고 시도하는데 이것저것 조합해서 해보는데 영 안된다.

패키지는 아래가 필요할 것 같아서 설치했고

$ sudo apt-cache search freerdp
freerdp2-wayland - RDP client for Windows Terminal Services (wayland client)

 

실행은 아래의 명령어로 하고, 기본 weston.ini는 /usr/share/doc/weston/examples/weston.ini 에서 복사해 옴.

$ weston --log=/home/pi/weston.log --config=/home/pi/.config/weston.ini --modules=screen-share.so --backend=fbdev-backend.so

 

에러나는대로 그대로 나네..

[11:54:41.823] Screen share failed: No wl_shm found
[11:54:41.823] unknown child process exited

 

parent.shm이 NULL 이면 뜬다는데 저건 또 어디서 생성하게 해야하나...

if (so->parent.shm == NULL) {
weston_log("Screen share failed: No wl_shm found\n");
goto err_display;
}

[링크 : https://coral.googlesource.com/weston-imx/+/refs/heads/release-chef/compositor/screen-share.c]

'프로그램 사용 > wayland' 카테고리의 다른 글

weston-image 와 cairo  (0) 2021.12.08
rpi3b 64bit weston  (0) 2021.12.03
wayland 와 weston 문서  (0) 2021.12.02
wayland  (0) 2021.11.29
weston shell  (0) 2021.11.26
Posted by 구차니