summaryrefslogtreecommitdiff
path: root/src/display.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/display.c')
-rw-r--r--src/display.c30
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;