From ed514cd0e4140847f28ed388bb2e8e8fab866226 Mon Sep 17 00:00:00 2001 From: "Dmitry V. Levin" Date: Sat, 4 Jan 2020 11:03:04 -0800 Subject: [PATCH] have_mitshm: use XShmQueryExtension to check for MIT-SHM extension Do not try to guess MIT_SHM extension availability from the string returned by XDisplayName, use the appropriate API instead. This fixes SDL2 inside hasher. --- src/video/x11/SDL_x11framebuffer.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/src/video/x11/SDL_x11framebuffer.c b/src/video/x11/SDL_x11framebuffer.c index 1897c3b95..1659adf73 100644 --- a/src/video/x11/SDL_x11framebuffer.c +++ b/src/video/x11/SDL_x11framebuffer.c @@ -40,14 +40,10 @@ static int shm_errhandler(Display *d, XErrorEvent *e) return(X_handler(d,e)); } -static SDL_bool have_mitshm(void) +static SDL_bool have_mitshm(Display *dpy) { /* Only use shared memory on local X servers */ - if ( (SDL_strncmp(X11_XDisplayName(NULL), ":", 1) == 0) || - (SDL_strncmp(X11_XDisplayName(NULL), "unix:", 5) == 0) ) { - return SDL_X11_HAVE_SHM; - } - return SDL_FALSE; + return X11_XShmQueryExtension(dpy) ? SDL_X11_HAVE_SHM : SDL_FALSE; } #endif /* !NO_SHARED_MEMORY */ @@ -86,7 +82,7 @@ X11_CreateWindowFramebuffer(_THIS, SDL_Window * window, Uint32 * format, /* Create the actual image */ #ifndef NO_SHARED_MEMORY - if (have_mitshm()) { + if (have_mitshm(display)) { XShmSegmentInfo *shminfo = &data->shminfo; shminfo->shmid = shmget(IPC_PRIVATE, window->h*(*pitch), IPC_CREAT | 0777);