[gtk+/gtk-2-22] directfb: fix GdkPixmap creation
- From: Sven Neumann <neo src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/gtk-2-22] directfb: fix GdkPixmap creation
- Date: Tue, 31 Aug 2010 19:10:51 +0000 (UTC)
commit 65f7b09b39d86b9594e057ae727defe95189b741
Author: Lionel Landwerlin <llandwerlin gmail com>
Date: Sat May 15 21:22:41 2010 +0200
directfb: fix GdkPixmap creation
Since GDK has introduced the offscreen window concept, pixmap can be
created using drawables which aren't native windows. This patch fix
this assumption.
Signed-off-by: Lionel Landwerlin <llandwerlin gmail com>
gdk/directfb/gdkpixmap-directfb.c | 56 +++++++++++++++---------------------
1 files changed, 23 insertions(+), 33 deletions(-)
---
diff --git a/gdk/directfb/gdkpixmap-directfb.c b/gdk/directfb/gdkpixmap-directfb.c
index 504f5e7..e26f3dc 100644
--- a/gdk/directfb/gdkpixmap-directfb.c
+++ b/gdk/directfb/gdkpixmap-directfb.c
@@ -113,41 +113,31 @@ _gdk_pixmap_new (GdkDrawable *drawable,
width, height, depth));
if (depth == -1)
- {
- draw_impl =
- GDK_DRAWABLE_IMPL_DIRECTFB (GDK_WINDOW_OBJECT (drawable)->impl);
-
- g_return_val_if_fail (draw_impl != NULL, NULL);
+ depth = gdk_drawable_get_depth (GDK_DRAWABLE (drawable));
- draw_impl->surface->GetPixelFormat (draw_impl->surface, &format);
- depth = DFB_BITS_PER_PIXEL (format);
- }
- else
+ switch (depth)
{
- switch (depth)
- {
- case 1:
- format = DSPF_A8;
- break;
- case 8:
- format = DSPF_LUT8;
- break;
- case 15:
- format = DSPF_ARGB1555;
- break;
- case 16:
- format = DSPF_RGB16;
- break;
- case 24:
- format = DSPF_RGB24;
- break;
- case 32:
- format = DSPF_RGB32;
- break;
- default:
- g_message ("unimplemented %s for depth %d", G_STRFUNC, depth);
- return NULL;
- }
+ case 1:
+ format = DSPF_A8;
+ break;
+ case 8:
+ format = DSPF_LUT8;
+ break;
+ case 15:
+ format = DSPF_ARGB1555;
+ break;
+ case 16:
+ format = DSPF_RGB16;
+ break;
+ case 24:
+ format = DSPF_RGB24;
+ break;
+ case 32:
+ format = DSPF_RGB32;
+ break;
+ default:
+ g_message ("unimplemented %s for depth %d", G_STRFUNC, depth);
+ return NULL;
}
if (!(surface =
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]