Also spew wayland display name through session pipe.

This commit is contained in:
Pierre-Loup A. Griffais 2021-04-27 21:17:36 -07:00
parent a85c8d761c
commit 2bb4907993
4 changed files with 18 additions and 12 deletions

View file

@ -349,7 +349,7 @@ retry:
listCommitsDone.push_back( commitID ); listCommitsDone.push_back( commitID );
} }
static Display *threadDPY = XOpenDisplay ( wlserver_get_nested_display() ); static Display *threadDPY = XOpenDisplay ( wlserver_get_nested_display_name() );
XSendEvent( threadDPY, ourWindow, True, SubstructureRedirectMask, &nudgeEvent ); XSendEvent( threadDPY, ourWindow, True, SubstructureRedirectMask, &nudgeEvent );
XFlush( threadDPY ); XFlush( threadDPY );
@ -2758,7 +2758,7 @@ steamcompmgr_main (int argc, char **argv)
alwaysComposite = True; alwaysComposite = True;
} }
dpy = XOpenDisplay ( wlserver_get_nested_display() ); dpy = XOpenDisplay ( wlserver_get_nested_display_name() );
if (!dpy) if (!dpy)
{ {
fprintf (stderr, "Can't open display\n"); fprintf (stderr, "Can't open display\n");
@ -2906,7 +2906,7 @@ steamcompmgr_main (int argc, char **argv)
if ( readyPipeFD != -1 ) if ( readyPipeFD != -1 )
{ {
dprintf( readyPipeFD, "%s\n", wlserver_get_nested_display() ); dprintf( readyPipeFD, "%s %s\n", wlserver_get_nested_display_name(), wlserver_get_wl_display_name() );
close( readyPipeFD ); close( readyPipeFD );
readyPipeFD = -1; readyPipeFD = -1;
} }

View file

@ -67,7 +67,7 @@ void vblankThreadRun( void )
void vblank_init( void ) void vblank_init( void )
{ {
g_nestedDpy = XOpenDisplay( wlserver_get_nested_display() ); g_nestedDpy = XOpenDisplay( wlserver_get_nested_display_name() );
assert( g_nestedDpy != nullptr ); assert( g_nestedDpy != nullptr );
g_lastVblank = get_time_in_nanos(); g_lastVblank = get_time_in_nanos();

View file

@ -563,15 +563,14 @@ int wlserver_init(int argc, char **argv, bool bIsNested) {
}; };
wlserver.wlr.xwayland_server = wlr_xwayland_server_create(wlserver.wl_display, &xwayland_options); wlserver.wlr.xwayland_server = wlr_xwayland_server_create(wlserver.wl_display, &xwayland_options);
wl_signal_add(&wlserver.wlr.xwayland_server->events.ready, &xwayland_ready_listener); wl_signal_add(&wlserver.wlr.xwayland_server->events.ready, &xwayland_ready_listener);
char wayland_display_name[32];
int result = -1; int result = -1;
int display_slot = 0; int display_slot = 0;
while ( result != 0 && display_slot < 128 ) while ( result != 0 && display_slot < 128 )
{ {
sprintf( wayland_display_name, "gamescope-%d", display_slot ); sprintf( wlserver.wl_display_name, "gamescope-%d", display_slot );
result = wl_display_add_socket( wlserver.wl_display, wayland_display_name ); result = wl_display_add_socket( wlserver.wl_display, wlserver.wl_display_name );
display_slot++; display_slot++;
} }
@ -585,9 +584,9 @@ int wlserver_init(int argc, char **argv, bool bIsNested) {
wlserver.wlr.seat = wlr_seat_create(wlserver.wl_display, "seat0"); wlserver.wlr.seat = wlr_seat_create(wlserver.wl_display, "seat0");
wlr_seat_set_capabilities( wlserver.wlr.seat, WL_SEAT_CAPABILITY_POINTER | WL_SEAT_CAPABILITY_KEYBOARD | WL_SEAT_CAPABILITY_TOUCH ); wlr_seat_set_capabilities( wlserver.wlr.seat, WL_SEAT_CAPABILITY_POINTER | WL_SEAT_CAPABILITY_KEYBOARD | WL_SEAT_CAPABILITY_TOUCH );
wlr_log(WLR_INFO, "Running compositor on wayland display '%s'", wayland_display_name); wlr_log(WLR_INFO, "Running compositor on wayland display '%s'", wlserver.wl_display_name);
setenv("GAMESCOPE_WAYLAND_DISPLAY", wayland_display_name, 1); setenv("GAMESCOPE_WAYLAND_DISPLAY", wlserver.wl_display_name, 1);
if (!wlr_backend_start( wlserver.wlr.multi_backend )) if (!wlr_backend_start( wlserver.wlr.multi_backend ))
{ {
@ -727,11 +726,16 @@ void wlserver_send_frame_done( struct wlr_surface *surf, const struct timespec *
wlr_surface_send_frame_done( surf, when ); wlr_surface_send_frame_done( surf, when );
} }
const char *wlserver_get_nested_display( void ) const char *wlserver_get_nested_display_name( void )
{ {
return wlserver.wlr.xwayland_server->display_name; return wlserver.wlr.xwayland_server->display_name;
} }
const char *wlserver_get_wl_display_name( void )
{
return wlserver.wl_display_name;
}
static void handle_surface_destroy( struct wl_listener *l, void *data ) static void handle_surface_destroy( struct wl_listener *l, void *data )
{ {
struct wlserver_surface *surf = wl_container_of( l, surf, destroy ); struct wlserver_surface *surf = wl_container_of( l, surf, destroy );

View file

@ -12,6 +12,7 @@ struct wlserver_t {
struct wl_display *wl_display; struct wl_display *wl_display;
struct wl_event_loop *wl_event_loop; struct wl_event_loop *wl_event_loop;
int wl_event_loop_fd; int wl_event_loop_fd;
char wl_display_name[32];
struct { struct {
struct wlr_backend *multi_backend; struct wlr_backend *multi_backend;
@ -84,7 +85,8 @@ void wlserver_mousewheel( int x, int y, uint32_t time );
void wlserver_send_frame_done( struct wlr_surface *surf, const struct timespec *when ); void wlserver_send_frame_done( struct wlr_surface *surf, const struct timespec *when );
const char *wlserver_get_nested_display( void ); const char *wlserver_get_nested_display_name( void );
const char *wlserver_get_wl_display_name( void );
struct wlserver_surface struct wlserver_surface
{ {