gdk: fix Win32 HDC access for offscreen windows
Normalize public windows and pixmaps to their drawable implementations before resolving Win32 HDC access. This makes public GDK_WINDOW_OFFSCREEN drawables resolve through their GdkOffscreenWindow backing drawable instead of treating the generic offscreen implementation as a Win32 drawable. The resulting helper removes the incompatible-pointer warning without increasing object text size.
This commit is contained in:
parent
7665fbc874
commit
7458a4ffe2
1 changed files with 12 additions and 8 deletions
|
|
@ -744,17 +744,21 @@ predraw (GdkGC *gc,
|
|||
static GdkDrawableImplWin32 *
|
||||
get_impl_drawable (GdkDrawable *drawable)
|
||||
{
|
||||
if (GDK_IS_OFFSCREEN_WINDOW (drawable))
|
||||
return _gdk_offscreen_window_get_real_drawable (GDK_OFFSCREEN_WINDOW (drawable));
|
||||
if (GDK_IS_DRAWABLE_IMPL_WIN32 (drawable))
|
||||
return GDK_DRAWABLE_IMPL_WIN32(drawable);
|
||||
else if (GDK_IS_WINDOW (drawable))
|
||||
return GDK_DRAWABLE_IMPL_WIN32 ((GDK_WINDOW_OBJECT (drawable))->impl);
|
||||
else if (GDK_IS_PIXMAP (drawable))
|
||||
return GDK_DRAWABLE_IMPL_WIN32 ((GDK_PIXMAP_OBJECT (drawable))->impl);
|
||||
else
|
||||
g_assert_not_reached ();
|
||||
if (GDK_IS_WINDOW (drawable))
|
||||
drawable = GDK_DRAWABLE ((GDK_WINDOW_OBJECT (drawable))->impl);
|
||||
|
||||
if (GDK_IS_OFFSCREEN_WINDOW (drawable))
|
||||
drawable =
|
||||
_gdk_offscreen_window_get_real_drawable
|
||||
(GDK_OFFSCREEN_WINDOW (drawable));
|
||||
|
||||
if (GDK_IS_PIXMAP (drawable))
|
||||
drawable = GDK_DRAWABLE ((GDK_PIXMAP_OBJECT (drawable))->impl);
|
||||
|
||||
if (GDK_IS_DRAWABLE_IMPL_WIN32 (drawable))
|
||||
return GDK_DRAWABLE_IMPL_WIN32 (drawable);
|
||||
|
||||
g_assert_not_reached ();
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue