*/
#include "obt/display.h"
+#include "obt/prop.h"
+#include "obt/internal.h"
+#include "obt/keyboard.h"
#ifdef HAVE_STRING_H
# include <string.h>
# include <unistd.h>
#endif
+Display* obt_display = NULL;
+
gboolean obt_display_error_occured = FALSE;
gboolean obt_display_extension_xkb = FALSE;
static gboolean xerror_ignore = FALSE;
-Display* obt_display_open(const char *display_name)
+gboolean obt_display_open(const char *display_name)
{
gchar *n;
Display *d = NULL;
n = display_name ? g_strdup(display_name) : NULL;
- d = XOpenDisplay(n);
+ obt_display = d = XOpenDisplay(n);
if (d) {
gint junk;
(void)junk;
g_message("X Sync extension is not present on the server or is an "
"incompatible version");
#endif
+
+ obt_prop_startup();
+ obt_keyboard_reload();
}
g_free(n);
- return d;
+ return obt_display != NULL;
}
-void obt_display_close(Display *d)
+void obt_display_close(void)
{
- if (d) XCloseDisplay(d);
+ obt_keyboard_shutdown();
+ if (obt_display) XCloseDisplay(obt_display);
}
static gint xerror_handler(Display *d, XErrorEvent *e)
XGetErrorText(d, e->error_code, errtxt, 127);
if (!xerror_ignore) {
if (e->error_code == BadWindow)
- /*g_message(_("X Error: %s\n"), errtxt)*/;
+ /*g_debug(_("X Error: %s\n"), errtxt)*/;
else
g_error("X Error: %s", errtxt);
} else
- g_message("XError code %d '%s'", e->error_code, errtxt);
+ g_debug("Ignoring XError code %d '%s'", e->error_code, errtxt);
#else
(void)d; (void)e;
#endif
return 0;
}
-void obt_display_ignore_errors(Display *d, gboolean ignore)
+void obt_display_ignore_errors(gboolean ignore)
{
- XSync(d, FALSE);
+ XSync(obt_display, FALSE);
xerror_ignore = ignore;
if (ignore) obt_display_error_occured = FALSE;
}