diff options
Diffstat (limited to 'src/display.c')
-rw-r--r-- | src/display.c | 30 |
1 files changed, 23 insertions, 7 deletions
diff --git a/src/display.c b/src/display.c index fdd90da..f83e274 100644 --- a/src/display.c +++ b/src/display.c @@ -318,6 +318,11 @@ XOpenDisplay(const char *display_name) return NULL; } + if (csx_display_add_randr(display) == -1) { + free(xdisplay); + return NULL; + } + /* Test property on root window. */ XChangeProperty(display->xdisplay, display->root->id, XInternAtom(display->xdisplay, "PHINEAS", False), @@ -657,6 +662,18 @@ csx_display_add_extension(struct csx_display *display, wl_list_insert(display->extension_list.prev, &extension->link); } +struct csx_extension * +csx_display_get_extension(struct csx_display *display, const char *name) +{ + struct csx_extension *e; + + wl_list_for_each(e, &display->extension_list, link) + if (strcmp(name, e->name) == 0) + return e; + + return NULL; +} + WL_EXPORT int XQueryExtension(Display *xdisplay, const char *name, int *major, int *first_event, int *first_error) @@ -666,13 +683,12 @@ XQueryExtension(Display *xdisplay, const char *name, csx_display_enter(display, X_QueryExtension, 0); - wl_list_for_each(e, &display->extension_list, link) { - if (strcmp(name, e->name) == 0) { - *major = e->major; - *first_event = e->first_event; - *first_error = e->first_error; - return True; - } + e = csx_display_get_extension(display, name); + if (e != NULL) { + *major = e->major; + *first_event = e->first_event; + *first_error = e->first_error; + return True; } *major = 0; |