forked from enlightenment/enlightenment
finish xwayland module implementation
note that this basically does nothing other than start an xserver and connection bisect harder if looking for bugs
This commit is contained in:
parent
bd313e90dd
commit
972b003163
|
@ -210,6 +210,8 @@ struct _E_Comp_Wl_Data
|
||||||
Ecore_Fd_Handler *fd_hdlr;
|
Ecore_Fd_Handler *fd_hdlr;
|
||||||
Ecore_Idler *idler;
|
Ecore_Idler *idler;
|
||||||
|
|
||||||
|
struct wl_client *xwl_client;
|
||||||
|
|
||||||
/* Eina_List *retry_clients; */
|
/* Eina_List *retry_clients; */
|
||||||
/* Ecore_Timer *retry_timer; */
|
/* Ecore_Timer *retry_timer; */
|
||||||
Eina_Bool restack : 1;
|
Eina_Bool restack : 1;
|
||||||
|
|
|
@ -13,7 +13,6 @@ struct _E_XWayland_Server
|
||||||
|
|
||||||
struct wl_display *wl_disp;
|
struct wl_display *wl_disp;
|
||||||
struct wl_event_loop *loop;
|
struct wl_event_loop *loop;
|
||||||
struct wl_client *client;
|
|
||||||
|
|
||||||
Ecore_Fd_Handler *abs_hdlr, *unx_hdlr;
|
Ecore_Fd_Handler *abs_hdlr, *unx_hdlr;
|
||||||
Ecore_Event_Handler *sig_hdlr;
|
Ecore_Event_Handler *sig_hdlr;
|
||||||
|
@ -217,7 +216,7 @@ _cb_xserver_event(void *data EINA_UNUSED, Ecore_Fd_Handler *hdlr EINA_UNUSED)
|
||||||
snprintf(xserver, sizeof(xserver), "%s", XWAYLAND_BIN);
|
snprintf(xserver, sizeof(xserver), "%s", XWAYLAND_BIN);
|
||||||
DBG("\tLaunching XWayland: %s: %s", xserver, disp);
|
DBG("\tLaunching XWayland: %s: %s", xserver, disp);
|
||||||
if (execl(xserver, xserver, disp, "-rootless", "-listen", abs_fd,
|
if (execl(xserver, xserver, disp, "-rootless", "-listen", abs_fd,
|
||||||
"-listen", unx_fd, "-wm", wm_fd, "-terminate", "-shm",
|
"-listen", unx_fd, "-terminate", "-shm",
|
||||||
NULL) < 0)
|
NULL) < 0)
|
||||||
{
|
{
|
||||||
ERR("Failed to exec XWayland: %m");
|
ERR("Failed to exec XWayland: %m");
|
||||||
|
@ -228,7 +227,7 @@ fail:
|
||||||
|
|
||||||
default:
|
default:
|
||||||
close(socks[1]);
|
close(socks[1]);
|
||||||
exs->client = wl_client_create(exs->wl_disp, socks[0]);
|
e_comp->wl_comp_data->xwl_client = wl_client_create(exs->wl_disp, socks[0]);
|
||||||
|
|
||||||
close(wms[1]);
|
close(wms[1]);
|
||||||
exs->wm_fd = wms[0];
|
exs->wm_fd = wms[0];
|
||||||
|
@ -252,6 +251,7 @@ static Eina_Bool
|
||||||
_cb_signal_event(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
|
_cb_signal_event(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
|
||||||
{
|
{
|
||||||
Ecore_Event_Signal_User *ev;
|
Ecore_Event_Signal_User *ev;
|
||||||
|
char buf[128];
|
||||||
|
|
||||||
ev = event;
|
ev = event;
|
||||||
if (ev->number != 1) return ECORE_CALLBACK_RENEW;
|
if (ev->number != 1) return ECORE_CALLBACK_RENEW;
|
||||||
|
@ -260,13 +260,9 @@ _cb_signal_event(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
|
||||||
* initialized. */
|
* initialized. */
|
||||||
|
|
||||||
DBG("XWayland Finished Init");
|
DBG("XWayland Finished Init");
|
||||||
|
snprintf(buf, sizeof(buf), ":%d", exs->disp);
|
||||||
/* TODO: create "window manager" process */
|
assert(ecore_x_init(buf));
|
||||||
|
e_comp_x_init();
|
||||||
/* TODO: NB:
|
|
||||||
*
|
|
||||||
* Weston creates a smaller window manager process here.
|
|
||||||
* We Maybe able to just do e_comp_x_init, but will have to test that */
|
|
||||||
|
|
||||||
return ECORE_CALLBACK_CANCEL;
|
return ECORE_CALLBACK_CANCEL;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue