Create /run/.wm_ready after initializing is done 31/317631/1
authorChangyeon Lee <cyeon.lee@samsung.com>
Mon, 6 Jan 2025 06:48:40 +0000 (15:48 +0900)
committerChangyeon Lee <cyeon.lee@samsung.com>
Mon, 6 Jan 2025 06:49:14 +0000 (15:49 +0900)
Change-Id: I342e63ce015f02cccfd566898c43a840d9bf16c5

data/units/display-manager-ready.service
src/headless_server.c

index 00ac10bf5f04b4577517187a6898c6591cfb4805..6a22e4981235c3dc8527c9772eeffb96277b4d22 100644 (file)
@@ -7,7 +7,6 @@ Type=oneshot
 EnvironmentFile=/etc/sysconfig/display-manager.env
 SmackProcessLabel=System
 ExecStart=/usr/bin/sh -c "while [ ! -e /run/wayland-0 ] ; do /usr/bin/sleep .1 ; done ;/bin/chown -f root:display /run/wayland-0;/bin/chmod 775 /run/wayland-0"
-ExecStartPost=/usr/bin/sh -c "/usr/bin/touch /run/.wm_ready"
 
 [Install]
 WantedBy=graphical.target
index 4e2d1cb8e82551e16929c2e741656c3679416e59..36d8a4be4113f0e04a0912991a5a7b438655a7e7 100644 (file)
@@ -94,6 +94,25 @@ handle_ds_log(enum ds_log_level level, const char *fmt, va_list args)
        dlog_vprint(dlog_level_from_ds_log_level(level), LOG_TAG, fmt, args);
 }
 
+static int
+server_create_wm_ready(void)
+{
+       FILE *wm_ready = NULL;
+       const char *path_wm_ready = "/run/.wm_ready";
+
+       wm_ready = fopen(path_wm_ready, "wb");
+       if (!wm_ready) {
+               ds_err("fail to open path:%s", path_wm_ready);
+               return 0;
+       }
+
+       ds_inf("Create %s", path_wm_ready);
+
+       fclose(wm_ready);
+
+       return 1;
+}
+
 int
 main(int argc, char *argv[])
 {
@@ -172,6 +191,9 @@ main(int argc, char *argv[])
        server.name = wl_display_add_socket_auto(server.display);
        HS_CHECK(server.name, goto end, "Could not add socket for wayland");
 
+       ret = server_create_wm_ready();
+       HS_CHECK(ret, goto end, "Failed to create wm_ready");
+
        setenv("WAYLAND_DISPLAY", server.name, true);
 
        ds_inf("Running headless server on WAYLAND_DISPLAY=%s", server.name);