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

  1. 2022.06.08 weston desktop-shell output destory
  2. 2022.03.18 weston debug message
  3. 2022.03.17 weston drm atomic
  4. 2022.02.17 wayvnc 실행 실패
  5. 2022.02.16 wayland-scanner
  6. 2022.02.07 wayland wl_fixed_t 변수
  7. 2022.01.24 wayvnc
  8. 2022.01.17 weston client 메모리 누수
  9. 2022.01.13 wayland buffer
  10. 2022.01.06 wayland client example

drm 에서 HDMI hotplug를 아래 코드에서 처리하는데 shell로 어떻게 넘겨주는진 발견하지 못했다.

static int
udev_drm_event(int fd, uint32_t mask, void *data)
{
struct drm_backend *b = data;
struct udev_device *event;
uint32_t conn_id, prop_id;

event = udev_monitor_receive_device(b->udev_monitor);

if (udev_event_is_hotplug(b, event)) {
if (udev_event_is_conn_prop_change(b, event, &conn_id, &prop_id))
drm_backend_update_conn_props(b, conn_id, prop_id);
else
drm_backend_update_heads(b, event);
}

udev_device_unref(event);

return 1;
}

static void
drm_backend_update_heads(struct drm_backend *b, struct udev_device *drm_device)
{
/* collect new connectors that have appeared, e.g. MST */
for (i = 0; i < resources->count_connectors; i++) {
uint32_t connector_id = resources->connectors[i];

head = drm_head_find_by_connector(b, connector_id);
if (head) {
drm_head_update_info(head);
} else {
head = drm_head_create(b, connector_id, drm_device);
if (!head)
weston_log("DRM: failed to create head for hot-added connector %d.\n",
   connector_id);
}
}
}

static void
drm_head_update_info(struct drm_head *head)
{
drmModeConnector *connector;

connector = drmModeGetConnector(head->backend->drm.fd,
head->connector_id);
if (!connector) {
weston_log("DRM: getting connector info for '%s' failed.\n",
   head->base.name);
return;
}

if (drm_head_assign_connector_info(head, connector) < 0)
drmModeFreeConnector(connector);

if (head->base.device_changed)
drm_head_log_info(head, "updated");
}

static void
drm_head_log_info(struct drm_head *head, const char *msg)
{
if (head->base.connected) {
weston_log("DRM: head '%s' %s, connector %d is connected, "
   "EDID make '%s', model '%s', serial '%s'\n",
   head->base.name, msg, head->connector_id,
   head->base.make, head->base.model,
   head->base.serial_number ?: "");
} else {
weston_log("DRM: head '%s' %s, connector %d is disconnected.\n",
   head->base.name, msg, head->connector_id);
}
}

 

다만.. 아래의 코드에서 등록되어 output이 파괴될때 트리거 되어 작동하는 녀석만 발견함.

static void
handle_output_destroy(struct wl_listener *listener, void *data);

static void
create_shell_output(struct desktop_shell *shell,
struct weston_output *output)
{
struct shell_output *shell_output;

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

shell_output->output = output;
shell_output->shell = shell;
shell_output->destroy_listener.notify = handle_output_destroy;
wl_signal_add(&output->destroy_signal,
      &shell_output->destroy_listener);
wl_list_insert(shell->output_list.prev, &shell_output->link);

if (wl_list_length(&shell->output_list) == 1)
shell_for_each_layer(shell,
     shell_output_changed_move_layer, NULL);
}

static void
handle_output_create(struct wl_listener *listener, void *data)
{
struct desktop_shell *shell =
container_of(listener, struct desktop_shell, output_create_listener);
struct weston_output *output = (struct weston_output *)data;

create_shell_output(shell, output);
}


static void
setup_output_destroy_handler(struct weston_compositor *ec,
struct desktop_shell *shell)
{
struct weston_output *output;

wl_list_init(&shell->output_list);
wl_list_for_each(output, &ec->output_list, link)
create_shell_output(shell, output);

shell->output_create_listener.notify = handle_output_create;
wl_signal_add(&ec->output_created_signal,
&shell->output_create_listener);

shell->output_move_listener.notify = handle_output_move;
wl_signal_add(&ec->output_moved_signal, &shell->output_move_listener);
}

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

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

weston desktop-shell output destory  (0) 2022.06.08
weston debug message  (0) 2022.03.18
weston drm atomic  (0) 2022.03.17
wayvnc 실행 실패  (0) 2022.02.17
wayland-scanner  (0) 2022.02.16
wayland wl_fixed_t 변수  (0) 2022.02.07
Posted by 구차니

댓글을 달아 주세요

프로그램 사용/wayland2022. 3. 18. 11:35

해당 명령을 입력한 콘솔로 출력된다. (시리얼, ssh 에서 각각 해 봄)

 

export WAYLAND_DEBUG=1

[링크 : https://wiki.st.com/stm32mpu/wiki/How_to_debug_Weston]

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

weston desktop-shell output destory  (0) 2022.06.08
weston debug message  (0) 2022.03.18
weston drm atomic  (0) 2022.03.17
wayvnc 실행 실패  (0) 2022.02.17
wayland-scanner  (0) 2022.02.16
wayland wl_fixed_t 변수  (0) 2022.02.07
Posted by 구차니

댓글을 달아 주세요

프로그램 사용/wayland2022. 3. 17. 16:39

테스트 중 아래와 같은 에러가 보여서 atomic이 먼가 찾아보는데..

[11:49:06.216] atomic: couldn't commit new state: Invalid argument
[11:49:06.217] repaint-flush failed: Invalid argument

 

말그대로.. 데이터의 atomic이 깨졌다는 건가..

At the other end there's struct drm_plane, representing a scanout engine that reads pixel data from memory represented by a struct drm_framebuffer and provides it to the display hardware.

[링크 : https://lwn.net/Articles/653071/]

 

backend-drm/kms.c 에서 해당 에러를 출력한다.

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

weston desktop-shell output destory  (0) 2022.06.08
weston debug message  (0) 2022.03.18
weston drm atomic  (0) 2022.03.17
wayvnc 실행 실패  (0) 2022.02.17
wayland-scanner  (0) 2022.02.16
wayland wl_fixed_t 변수  (0) 2022.02.07
Posted by 구차니

댓글을 달아 주세요

프로그램 사용/wayland2022. 2. 17. 12:04

weston 에서 억지로 빌드해서 돌렸더니 에러 똬닥!

# ./wayvnc
wl_registry@2: error 0: invalid version for global zxdg_output_manager_v1 (4): have 2, wanted 3
ERROR: Virtual Pointer protocol not supported by compositor.
ERROR: Failed to initialise wayland

 

이제 보니.. wlroots 기반의 wayland compositor에서 돌아가는 녀석이었군..

About
A VNC server for wlroots based Wayland compositors

[링크 : https://github.com/any1/wayvnc]

 

freedesktop.org 에서 관리하는 녀석

[링크 : https://gitlab.freedesktop.org/wlroots/wlroots/]

[링크 : https://github.com/swaywm/wlroots]

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

weston debug message  (0) 2022.03.18
weston drm atomic  (0) 2022.03.17
wayvnc 실행 실패  (0) 2022.02.17
wayland-scanner  (0) 2022.02.16
wayland wl_fixed_t 변수  (0) 2022.02.07
wayvnc  (0) 2022.01.24
Posted by 구차니

댓글을 달아 주세요

프로그램 사용/wayland2022. 2. 16. 14:09

동일 이름의 xml 파일은 보이는데 헤더나 소스가 없어서

build 관련 스크립트를 뒤져보다 보니 빙고

./wayvnc/build/build.ninja:205:build protocols/libclient_protos.a.p/wlr-virtual-pointer-unstable-v1.h: CUSTOM_COMMAND ../protocols/wlr-virtual-pointer-unstable-v1.xml | /opt/toolchain/usr/bin/wayland-scanner

 

This tool is used to generate C headers & glue code from the Wayland protocol XML files discussed in chapter 2.3

[링크 : https://wayland-book.com/libwayland/wayland-scanner.html]

[링크 : https://makersweb.net/linux/18842]

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

weston drm atomic  (0) 2022.03.17
wayvnc 실행 실패  (0) 2022.02.17
wayland-scanner  (0) 2022.02.16
wayland wl_fixed_t 변수  (0) 2022.02.07
wayvnc  (0) 2022.01.24
weston client 메모리 누수  (0) 2022.01.17
Posted by 구차니

댓글을 달아 주세요

23bit 비트의 정수고 8bit의 십진수 정확도 라고 하니 먼가 감이 안오는데

 

0 ~ 8388608(2^23) 범위를

0  ~ 32768 로 사용한다는 것. (그럼 이론상 FHD 17*17개 UHD 8*8 까지 가능하려나)

 

정확도는 어떤 의미로 쓰려나.. 나중에 확대했을때를 대비해서 소수점 포인트를 주는건가?

 

/**
 * Fixed-point number
 *
 * A `wl_fixed_t` is a 24.8 signed fixed-point number with a sign bit, 23 bits
 * of integer precision and 8 bits of decimal precision. Consider `wl_fixed_t`
 * as an opaque struct with methods that facilitate conversion to and from
 * `double` and `int` types.
 */
typedef int32_t wl_fixed_t;

[링크 : https://code.woboq.org/qt5/include/wayland-util.h.html]

 

typedef int32_t wl_fixed_t;

static inline int wl_fixed_to_int(wl_fixed_t f)
{
    return f / 256;
}

static inline wl_fixed_t wl_fixed_from_int(int i)
{
    return i * 256;
}

[링크 : https://github.com/nobled/wayland/blob/master/src/wayland-util.h]

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

wayvnc 실행 실패  (0) 2022.02.17
wayland-scanner  (0) 2022.02.16
wayland wl_fixed_t 변수  (0) 2022.02.07
wayvnc  (0) 2022.01.24
weston client 메모리 누수  (0) 2022.01.17
wayland buffer  (0) 2022.01.13
Posted by 구차니

댓글을 달아 주세요

프로그램 사용/wayland2022. 1. 24. 16:55

아놔.. rdp랑 동일하네.. wayland 자체가 현재 사용중인 세션은 어떻게든 끌어갈 수 없는 구조인가?

This is a VNC server for wlroots-based Wayland compositors (⛔ Gnome and KDE are not supported). It attaches to a running Wayland session, creates virtual input devices, and exposes a single display via the RFB protocol. The Wayland session may be a headless one, so it is also possible to run wayvnc without a physical display attached.

[링크 : https://github.com/any1/wayvnc]

 

As of 2020, there are several projects that use these methods to provide GUI access to remote computers. The compositor Weston provides an RDP backend. GNOME has a remote desktop server that supports VNC. WayVNC is a VNC server that works with compositors, like Sway, based on the wlroots library. Waypipe works with all Wayland compositors and offers almost-transparent application forwarding, like ssh -X.

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

 

느리긴 해도 라즈베리 파이 3 에서도 돌아가긴 한다는 건가?

New features since v0.1.2:
  • The OpenGL ES 2.0 based renderer has now been replaced with a pixman based
    renderer. The new renderer is both simpler and performs better on devices
    with poor memory bandwidth such as the Raspberry Pi 3.

[링크 : https://github.com/any1/wayvnc/releases]

[링크 : https://github.com/any1/neatvnc#client-compatibility]

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

wayland-scanner  (0) 2022.02.16
wayland wl_fixed_t 변수  (0) 2022.02.07
wayvnc  (0) 2022.01.24
weston client 메모리 누수  (0) 2022.01.17
wayland buffer  (0) 2022.01.13
wayland client example  (0) 2022.01.06
Posted by 구차니

댓글을 달아 주세요

프로그램 사용/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
weston client 메모리 누수  (0) 2022.01.17
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 buffer  (0) 2022.01.13
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
wayland client example  (0) 2022.01.06
weston window transform  (0) 2022.01.06
weston-screenshooter 실행에러  (0) 2022.01.05
weston 단축키  (0) 2022.01.04
Posted by 구차니

댓글을 달아 주세요