/** * gdk_x11_atom_to_xatom_for_display: * @display: (type GdkX11Display): A #GdkDisplay * @atom: A #GdkAtom, or %GDK_NONE * * Converts from a #GdkAtom to the X atom for a #GdkDisplay * with the same string value. The special value %GDK_NONE * is converted to %None. * * Return value: the X atom corresponding to @atom, or %None * * Since: 2.2 **/ Atom gdk_x11_atom_to_xatom_for_display (GdkDisplay *display, GdkAtom atom) { Atom xatom = None; g_return_val_if_fail (GDK_IS_DISPLAY (display), None); if (atom == GDK_NONE) return None; if (gdk_display_is_closed (display)) return None; xatom = lookup_cached_xatom (display, atom); if (!xatom) { char *name = gdk_atom_name (atom); xatom = XInternAtom (GDK_DISPLAY_XDISPLAY (display), name, FALSE); insert_atom_pair (display, atom, xatom); g_free (name); } return xatom; }
/** * gdk_x11_xatom_to_atom_for_display: * @display: (type GdkX11Display): A #GdkDisplay * @xatom: an X atom * * Convert from an X atom for a #GdkDisplay to the corresponding * #GdkAtom. * * Return value: (transfer none): the corresponding #GdkAtom. * * Since: 2.2 **/ GdkAtom gdk_x11_xatom_to_atom_for_display (GdkDisplay *display, Atom xatom) { GdkX11Display *display_x11; GdkAtom virtual_atom = GDK_NONE; g_return_val_if_fail (GDK_IS_DISPLAY (display), GDK_NONE); if (xatom == None) return GDK_NONE; if (gdk_display_is_closed (display)) return GDK_NONE; display_x11 = GDK_X11_DISPLAY (display); if (xatom < G_N_ELEMENTS (xatoms_offset) - N_CUSTOM_PREDEFINED) return INDEX_TO_ATOM (xatom); if (display_x11->atom_to_virtual) virtual_atom = GDK_POINTER_TO_ATOM (g_hash_table_lookup (display_x11->atom_to_virtual, GUINT_TO_POINTER (xatom))); if (!virtual_atom) { /* If this atom doesn't exist, we'll die with an X error unless * we take precautions */ char *name; gdk_x11_display_error_trap_push (display); name = XGetAtomName (GDK_DISPLAY_XDISPLAY (display), xatom); if (gdk_x11_display_error_trap_pop (display)) { g_warning (G_STRLOC " invalid X atom: %ld", xatom); } else { virtual_atom = gdk_atom_intern (name, FALSE); XFree (name); insert_atom_pair (display, virtual_atom, xatom); } } return virtual_atom; }
gint _gdk_x11_display_send_xevent (GdkDisplay *display, Window window, gboolean propagate, glong event_mask, XEvent *event_send) { gboolean result; if (gdk_display_is_closed (display)) return FALSE; gdk_x11_display_error_trap_push (display); result = XSendEvent (GDK_DISPLAY_XDISPLAY (display), window, propagate, event_mask, event_send); XSync (GDK_DISPLAY_XDISPLAY (display), False); if (gdk_x11_display_error_trap_pop (display)) return FALSE; return result; }
static VALUE rg_closed_p(VALUE self) { return CBOOL2RVAL(gdk_display_is_closed(_SELF(self))); }