Only sync the display if creating a native window implicitly

This commit is contained in:
Alexander Larsson 2009-01-29 19:52:12 +01:00 committed by Alexander Larsson
parent e631d2d2d4
commit a6e647863d
2 changed files with 10 additions and 8 deletions

View File

@ -1305,12 +1305,6 @@ gdk_window_set_has_native (GdkWindow *window, gboolean has_native)
if (gdk_window_is_viewable (window))
GDK_WINDOW_IMPL_GET_IFACE (private->impl)->show (window);
/* We sync here to ensure the window is created in the Xserver when
* this function returns. This is required because the returned XID
* for this window must be valid immediately, even with another
* connection to the Xserver */
gdk_display_sync (gdk_drawable_get_display (window));
}
else
{

View File

@ -875,14 +875,22 @@ gdk_x11_drawable_get_xid (GdkDrawable *drawable)
/* Try to ensure the window has a native window */
if (!_gdk_window_has_impl (window))
gdk_window_set_has_native (window, TRUE);
{
gdk_window_set_has_native (window, TRUE);
/* We sync here to ensure the window is created in the Xserver when
* this function returns. This is required because the returned XID
* for this window must be valid immediately, even with another
* connection to the Xserver */
gdk_display_sync (gdk_drawable_get_display (window));
}
if (!GDK_WINDOW_IS_X11 (window))
{
g_warning (G_STRLOC " drawable is not a native X11 window");
return None;
}
impl = ((GdkWindowObject *)drawable)->impl;
}
else if (GDK_IS_PIXMAP (drawable))