#include "screen.h"
#include "gettext.h"
#include <stdlib.h>
+#include <assert.h>
#include <string.h>
#include <stdio.h>
xcb_connection_t *conn;
conn = xcb_connect(name, NULL);
- if (conn) {
+ if (conn && !xcb_connection_has_error(conn)) {
dpy = malloc(sizeof(d_display_t));
dpy->conn = conn;
dpy->ref = 1;
+ dpy->fd = xcb_get_file_descriptor(conn);
dpy->screens = NULL;
dpy->nscreens = 0;
display_unref(d_display_t *dpy)
{
if (dpy && --dpy->ref == 0) {
+ int i;
xcb_disconnect(dpy->conn);
+
+ for (i = 0; i < dpy->nscreens; ++i)
+ screen_free(&dpy->screens[i]);
free(dpy->screens);
free(dpy);
}
{
int i;
for (i = 0; i < dpy->nscreens; ++i)
- if (dpy->screens[i].super.root == root) return &dpy->screens[i];
- g_assert_not_reached();
+ if (dpy->screens[i].super.root == root)
+ return &dpy->screens[i];
+ assert(0);
return NULL;
}
+struct d_screen*
+display_screen_n(d_display_t *dpy, int n)
+{
+ assert(n >= 0 && n < dpy->nscreens);
+ return &dpy->screens[n];
+}