]> Pileus Git - ~andy/gtk/commitdiff
updated mininum dfb to 0.9.24 added more directfb wrapper functions
authorMichael Emmel <mike.emmel@gmail.com>
Wed, 14 Jun 2006 21:54:25 +0000 (21:54 +0000)
committerMichael David Emmel <memmel@src.gnome.org>
Wed, 14 Jun 2006 21:54:25 +0000 (21:54 +0000)
2006-06-14  Michael Emmel  <mike.emmel@gmail.com>
    * configure.in: updated mininum  dfb to 0.9.24
    * gdk/directfb/gdkdirectfb.h: added more directfb wrapper functions
    * gdk/directfb/gdkdrawable-directfb.c: wrapper functions and patch from
     Claudio Ciccani <klan@users.sf.net> to use a subsurface for cairo
    * gdk/directfb/gdkvisual-directfb.c: changed initalization sequence
    * gdk/directfb/gdkwindow-directfb.c: corrected reparent for toplevels
    * gdk/directfb/gdkdisplay-directfb.c: changed initilization sequence
    to a more rational order

ChangeLog
ChangeLog.pre-2-10
configure.in
gdk/directfb/gdkdirectfb.h
gdk/directfb/gdkdisplay-directfb.c
gdk/directfb/gdkdrawable-directfb.c
gdk/directfb/gdkvisual-directfb.c
gdk/directfb/gdkwindow-directfb.c

index cd45d9b4ef852484acff333922bcda69511b8bdd..1c4015d5bae2c39e7aea0109f9cc6848f1e09796 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2006-06-14  Michael Emmel  <mike.emmel@gmail.com>
+       * configure.in: updated mininum  dfb to 0.9.24
+       * gdk/directfb/gdkdirectfb.h: added more directfb wrapper functions
+       * gdk/directfb/gdkdrawable-directfb.c: wrapper functions and patch from 
+        Claudio Ciccani <klan@users.sf.net> to use a subsurface for cairo
+    * gdk/directfb/gdkvisual-directfb.c: changed initalization sequence
+    * gdk/directfb/gdkwindow-directfb.c: corrected reparent for toplevels
+    * gdk/directfb/gdkdisplay-directfb.c: changed initilization sequence
+       to a more rational order
+
 2006-06-14  Federico Mena Quintero  <federico@novell.com>
 
        * perf/gtkwidgetprofiler.c (gtk_widget_profiler_profile_expose):
index cd45d9b4ef852484acff333922bcda69511b8bdd..1c4015d5bae2c39e7aea0109f9cc6848f1e09796 100644 (file)
@@ -1,3 +1,13 @@
+2006-06-14  Michael Emmel  <mike.emmel@gmail.com>
+       * configure.in: updated mininum  dfb to 0.9.24
+       * gdk/directfb/gdkdirectfb.h: added more directfb wrapper functions
+       * gdk/directfb/gdkdrawable-directfb.c: wrapper functions and patch from 
+        Claudio Ciccani <klan@users.sf.net> to use a subsurface for cairo
+    * gdk/directfb/gdkvisual-directfb.c: changed initalization sequence
+    * gdk/directfb/gdkwindow-directfb.c: corrected reparent for toplevels
+    * gdk/directfb/gdkdisplay-directfb.c: changed initilization sequence
+       to a more rational order
+
 2006-06-14  Federico Mena Quintero  <federico@novell.com>
 
        * perf/gtkwidgetprofiler.c (gtk_widget_profiler_profile_expose):
index 7e17b3ce4a5290ce0729e83937b7179732a6ae28..f0e770c9625b93ca74d9f5b8e5f80c8fa0afd4d2 100644 (file)
@@ -1406,7 +1406,7 @@ else
 fi
 
 if test "x$gdktarget" = "xdirectfb"; then
-  DIRECTFB_REQUIRED_VERSION=0.9.21
+  DIRECTFB_REQUIRED_VERSION=0.9.24
   AC_MSG_CHECKING(for DirectFB)
 
   if $PKG_CONFIG --atleast-version $DIRECTFB_REQUIRED_VERSION directfb ; then
index 091e9ff0fb1ce9e9a5251b85fba6d96707144309..0db9ec917303eeb70675d5dd1d89a9866422109e 100644 (file)
@@ -36,8 +36,6 @@
 #include <cairo.h>
 #include <directfb.h>
 #include "gdk/gdkprivate.h"
-//#include "gdk/gdkwindow.h"
-#include "gdkdisplay-directfb.h"
 
 /* macro for a safe call to DirectFB functions */
 #define DFBCHECK(x...) \
@@ -85,6 +83,11 @@ GdkWindow * gdk_directfb_window_new         (GdkWindow             *parent,
 
 GdkVisual * gdk_directfb_visual_by_format   (DFBSurfacePixelFormat  pixel_format);
 
+IDirectFBWindow *gdk_directfb_window_lookup(GdkWindow *window);
+IDirectFBSurface *gdk_directfb_surface_lookup(GdkWindow *window);
+GdkWindow *gdk_directfb_create_child_window(GdkWindow *parent,
+                IDirectFBSurface *subsurface);
+
 G_END_DECLS
 
 #endif /* __GDK_DIRECTFB_H__ */
index 209bf1dc2e3a330ba978e78f9888205319346fd4..770cf515c183c4078af87b0f67f867d6073a0be3 100644 (file)
@@ -104,7 +104,6 @@ GdkDisplay * gdk_display_open (const gchar *display_name)
     }
   _gdk_display = g_object_new(GDK_TYPE_DISPLAY_DFB,NULL);
   _gdk_display->directfb=directfb;
-  _gdk_events_init ();
 
   ret = directfb->GetDisplayLayer (directfb, DLID_PRIMARY, &layer);
   if (ret != DFB_OK)
@@ -115,7 +114,6 @@ GdkDisplay * gdk_display_open (const gchar *display_name)
       return NULL;
     }
 
-  layer->EnableCursor (layer, 1);
 
   ret=directfb->GetInputDevice (directfb, DIDID_KEYBOARD, &keyboard);
 
@@ -131,16 +129,19 @@ GdkDisplay * gdk_display_open (const gchar *display_name)
 
   _gdk_screen = g_object_new (GDK_TYPE_SCREEN, NULL);
 
-  _gdk_windowing_window_init ();
-
   _gdk_visual_init ();
+
   gdk_screen_set_default_colormap (_gdk_screen,
                                    gdk_screen_get_system_colormap (_gdk_screen));
+  _gdk_windowing_window_init ();
   _gdk_windowing_image_init ();
 
   _gdk_input_init ();
   _gdk_dnd_init ();
 
+  _gdk_events_init ();
+  layer->EnableCursor (layer, 1);
+
   g_signal_emit_by_name (gdk_display_manager_get (),
                         "display_opened", _gdk_display);
 
index 9a8f7097ee22890ecfb914fa296dbdd79dcbde76..0f476e6b0daec7b61cbe6f19afeac7f899673e72 100644 (file)
@@ -1076,14 +1076,16 @@ gdk_directfb_ref_cairo_surface (GdkDrawable *drawable)
     g_return_val_if_fail (GDK_IS_DRAWABLE_IMPL_DIRECTFB (drawable), NULL);
 
     GdkDrawableImplDirectFB *impl = GDK_DRAWABLE_IMPL_DIRECTFB (drawable);
-       IDirectFB *dfb = GDK_DISPLAY_DFB(gdk_drawable_get_display(drawable))->directfb;
+    IDirectFB *dfb = GDK_DISPLAY_DFB(gdk_drawable_get_display(drawable))->directfb;
     if (!impl->cairo_surface) {
-       impl->cairo_surface = cairo_directfb_surface_create(dfb ,impl->surface);
-       cairo_surface_set_user_data (impl->cairo_surface, 
-                                    &gdk_directfb_cairo_key,drawable, 
-                                    gdk_directfb_cairo_surface_destroy);
-               //XXX!!! MAJOR HACK so cairo coexists with direct drawing
-               //impl->surface->Unlock( impl->surface );
+      IDirectFBSurface *surface;
+      if (impl->surface->GetSubSurface (impl->surface, NULL, &surface) == DFB_OK) {
+        impl->cairo_surface = cairo_directfb_surface_create (dfb, surface);
+        cairo_surface_set_user_data (impl->cairo_surface, 
+                                     &gdk_directfb_cairo_key, drawable, 
+                                     gdk_directfb_cairo_surface_destroy);
+        surface->Release (surface);
+      }
     } else {
         cairo_surface_reference (impl->cairo_surface);
     }
index e8618dc77ba0ccfcd35bccb3199ade508002c06f..e9830fe786843cd03d9b823da6450cd675455e7c 100644 (file)
@@ -63,7 +63,7 @@ static DFBSurfacePixelFormat formats[] =
   DSPF_RGB332
 };
 
-static GdkVisual         * system_visual = NULL;
+GdkVisual         * system_visual = NULL;
 static GdkVisualDirectFB * visuals[G_N_ELEMENTS (formats) + 1] = { NULL };
 static gint                available_depths[G_N_ELEMENTS (formats) + 1] = {0};
 static GdkVisualType       available_types[G_N_ELEMENTS (formats) + 1]  = {0};
@@ -110,7 +110,7 @@ gdk_visual_get_type (void)
 }
 
 void
-_gdk_visual_init (void)
+_gdk_visual_init ()
 {
   DFBResult              ret;
   DFBDisplayLayerConfig  dlc;
@@ -118,11 +118,10 @@ _gdk_visual_init (void)
   IDirectFBSurface      *dest;
   gint                   i, c;
 
-  GdkWindowImplDirectFB  *root_impl = GDK_WINDOW_IMPL_DIRECTFB (
-                                               GDK_WINDOW_OBJECT(_gdk_parent_root)->impl);
 
   _gdk_display->layer->GetConfiguration (_gdk_display->layer, &dlc);
-  
+  g_assert( dlc.pixelformat != DSPF_UNKNOWN);
+
   dest = gdk_display_dfb_create_surface(_gdk_display,dlc.pixelformat,8,8);
   g_assert (dest != NULL);
 
@@ -152,13 +151,9 @@ _gdk_visual_init (void)
 
       dest->GetAccelerationMask (dest, src, &acc);
 
-      if (acc & DFXL_BLIT)
+      if (acc & DFXL_BLIT || formats[i] == dlc.pixelformat)
         {
-          visuals[c] = gdk_directfb_visual_create (formats[i]);
-
-          if (formats[i] == root_impl->drawable.format)
             system_visual = GDK_VISUAL (visuals[c]);
-          
           c++;
         }
 
@@ -167,17 +162,20 @@ _gdk_visual_init (void)
 
   dest->Release (dest);
 
+  //fallback to ARGB
   if (!system_visual)
     {
-      visuals[c] = gdk_directfb_visual_create (root_impl->drawable.format);
-      system_visual = GDK_VISUAL (visuals[c]);      
+        for (i = 0; i < G_N_ELEMENTS (formats); i++) {
+            if (formats[i] == DSPF_ARGB ) {
+                if( visuals[i] == NULL )
+                  visuals[i] = gdk_directfb_visual_create (formats[i]);
+                system_visual = visuals[i];
+                break;
+            }
+        }
     }
 
-  g_assert (system_visual);
-  /*
-       Now we can set up the system colormap
-  */
-  gdk_drawable_set_colormap (GDK_DRAWABLE (_gdk_parent_root),gdk_colormap_get_system());
+  g_assert (system_visual != NULL);
 }
 
 gint
@@ -195,6 +193,7 @@ gdk_visual_get_best_type (void)
 GdkVisual*
 gdk_screen_get_system_visual (GdkScreen *screen)
 {
+  g_assert( system_visual);
   return system_visual;
 }
 
index 0394934075d064379e9b3967cc36f4a91b635dea..e4d802eafa38b36d0de98e2140c75652597a0afc 100644 (file)
@@ -37,6 +37,7 @@
 
 #include "gdkdirectfb.h"
 #include "gdkprivate-directfb.h"
+#include "gdkdisplay-directfb.h"
 
 #include "gdkregion-generic.h"
 
@@ -160,7 +161,6 @@ gdk_window_impl_directfb_finalize (GObject *object)
     {
       gdk_directfb_window_id_table_remove (impl->dfb_id);
          /* native window resource must be release before we can finalize !*/
-      /*impl->window->Release (impl->window);*/
       impl->window = NULL;
     }
 
@@ -218,6 +218,7 @@ create_directfb_window (GdkWindowImplDirectFB *impl,
   if (ret != DFB_OK)
     {
       DirectFBError ("gdk_window_new: Layer->CreateWindow failed", ret);
+      g_assert (0);
       return FALSE;
     }
 
@@ -269,10 +270,11 @@ _gdk_windowing_window_init (void)
     DFBWindowDescription   desc;
     desc.flags = 0;
        /*XXX I must do this now its a bug  ALPHA ROOT*/
-#if 1 
-    desc.flags |= DWDESC_CAPS;
-    desc.caps = DWCAPS_ALPHACHANNEL;
-#endif
+
+    desc.flags = DWDESC_CAPS;
+    desc.caps = 0;
+    desc.caps  |= DWCAPS_NODECORATION;
+    desc.caps  |= DWCAPS_ALPHACHANNEL;
     desc.flags |= ( DWDESC_WIDTH | DWDESC_HEIGHT |
                       DWDESC_POSX  | DWDESC_POSY );
     desc.posx   = 0;
@@ -285,6 +287,10 @@ _gdk_windowing_window_init (void)
   }
   impl->drawable.surface->GetPixelFormat(impl->drawable.surface,&impl->drawable.format); 
   private->depth = DFB_BITS_PER_PIXEL(impl->drawable.format);
+  /*
+       Now we can set up the system colormap
+  */
+  gdk_drawable_set_colormap (GDK_DRAWABLE (_gdk_parent_root),gdk_colormap_get_system());
 }
 
 
@@ -1281,7 +1287,7 @@ gdk_window_move_resize (GdkWindow *window,
         }
     }
 }
-
+//XXX BROKE if top LEVEL WINDOW ~~~
 void
 gdk_window_reparent (GdkWindow *window,
                      GdkWindow *new_parent,
@@ -1291,6 +1297,9 @@ gdk_window_reparent (GdkWindow *window,
   GdkWindowObject *window_private;
   GdkWindowObject *parent_private;
   GdkWindowObject *old_parent_private;
+  GdkWindowImplDirectFB *impl;
+  GdkWindowImplDirectFB *parent_impl;
+  GdkVisual             *visual;
 
   g_return_if_fail (GDK_IS_WINDOW (window));
 
@@ -1303,6 +1312,12 @@ gdk_window_reparent (GdkWindow *window,
   window_private = (GdkWindowObject *) window;
   old_parent_private = (GdkWindowObject *) window_private->parent;
   parent_private = (GdkWindowObject *) new_parent;
+  parent_impl = GDK_WINDOW_IMPL_DIRECTFB (parent_private->impl);
+  visual = gdk_drawable_get_visual (window);
+
+  /* already parented */
+  if( window_private->parent == (GdkWindowObject *)new_parent )
+          return;
 
   window_private->parent = (GdkWindowObject *) new_parent;
 
@@ -1312,9 +1327,66 @@ gdk_window_reparent (GdkWindow *window,
         g_list_remove (old_parent_private->children, window);
     }
 
-  parent_private->children = g_list_prepend (parent_private->children, window);
+    parent_private->children = g_list_prepend (parent_private->children, window);
+
+    impl = GDK_WINDOW_IMPL_DIRECTFB (window_private->impl);
+
+    if( impl->drawable.surface ) {
+        impl->drawable.surface->Release (impl->drawable.surface);
+        impl->drawable.surface = NULL;
+    }
+
+    if( impl->window != NULL ) { 
+        gdk_directfb_window_id_table_remove (impl->dfb_id);
+       impl->window->SetOpacity (impl->window,0);
+               impl->window->Close(impl->window);
+       impl->window->Release(impl->window);
+        impl->window = NULL;
+    }
 
-  gdk_window_move_resize (window, x, y, -1, -1);
+    //create window were a child of the root now
+    if( window_private->parent == (GdkWindowObject *)_gdk_parent_root)  {
+        DFBWindowDescription  desc;
+        DFBWindowOptions  window_options = DWOP_NONE;
+        desc.flags = DWDESC_CAPS;
+        if( window_private->input_only ) {
+            desc.caps = DWCAPS_INPUTONLY;
+        } else {
+            desc.flags |= DWDESC_PIXELFORMAT;
+            desc.pixelformat = ((GdkVisualDirectFB *) visual)->format;
+            if (DFB_PIXELFORMAT_HAS_ALPHA (desc.pixelformat)) {
+                desc.flags |= DWDESC_CAPS;
+                desc.caps = DWCAPS_ALPHACHANNEL;
+            }
+       }
+       if( window_private->window_type ==  GDK_WINDOW_CHILD )
+           window_private->window_type = GDK_WINDOW_TOPLEVEL;
+        desc.flags |= ( DWDESC_WIDTH | DWDESC_HEIGHT |
+                      DWDESC_POSX  | DWDESC_POSY );
+        desc.posx   = x;
+        desc.posy   = y;
+        desc.width  = impl->drawable.width;
+        desc.height = impl->drawable.height;
+        if (!create_directfb_window (impl, &desc, window_options))
+        {
+                 g_assert(0);
+          _gdk_window_destroy (window, FALSE);
+          return;
+        }
+        /* we hold a reference count on ourselves */
+        g_object_ref (window);
+        impl->window->GetID (impl->window, &impl->dfb_id);
+        gdk_directfb_window_id_table_insert (impl->dfb_id, window);
+        gdk_directfb_event_windows_add (window);
+   } else {
+          DFBRectangle rect = { x, y, impl->drawable.width,
+                                     impl->drawable.height};
+          impl->window = NULL;
+          parent_impl->drawable.surface->GetSubSurface (
+                          parent_impl->drawable.surface,
+                          &rect,
+                          &impl->drawable.surface);
+   }
 }
 
 void
@@ -2411,19 +2483,155 @@ gdk_window_get_frame_extents (GdkWindow    *window,
   rect->height = impl->height;
 }
 
+/**
+ * Given a directfb window and a subsurface of that window
+ * create a gdkwindow chaild wrapper
+ */
+GdkWindow *gdk_directfb_create_child_window(GdkWindow *parent,
+                                IDirectFBSurface *subsurface)
+{
+  GdkWindow             *window;
+  GdkWindowObject       *private;
+  GdkWindowObject       *parent_private;
+  GdkWindowImplDirectFB *impl;
+  GdkWindowImplDirectFB *parent_impl;
+  gint x,y,w,h;
+
+  g_return_val_if_fail (parent != NULL, NULL);
+
+  window = g_object_new (GDK_TYPE_WINDOW, NULL);
+  private = GDK_WINDOW_OBJECT (window);
+  parent_private = GDK_WINDOW_OBJECT (parent);
+  parent_impl = GDK_WINDOW_IMPL_DIRECTFB (parent_private->impl);
+  private->parent = parent_private;
+
+  subsurface->GetPosition(subsurface,&x,&y);
+  subsurface->GetSize(subsurface,&w,&h);
+
+  impl = GDK_WINDOW_IMPL_DIRECTFB (private->impl);
+  impl->drawable.wrapper = GDK_DRAWABLE (window);
+
+  private->x = x;
+  private->y = y;
+
+  _gdk_directfb_calc_abs (window);
+
+  impl->drawable.width  = w;
+  impl->drawable.height = h;
+  private->window_type = GDK_WINDOW_CHILD;
+  impl->drawable.surface = subsurface;
+  impl->drawable.format = parent_impl->drawable.format;
+  private->depth = parent_private->depth;
+  gdk_drawable_set_colormap (GDK_DRAWABLE (window),
+        gdk_drawable_get_colormap (parent));
+  gdk_window_set_cursor (window, NULL);
+  parent_private->children = g_list_prepend (parent_private->children,window);
+  /*we hold a reference count on ourselves */
+  g_object_ref (window);
+
+  return window;
 
+}
 
+/*
+ * The wrapping is not perfect since directfb does not give full access
+ * to the current state of a window event mask etc need to fix dfb
+ */
 GdkWindow *
 gdk_window_foreign_new_for_display (GdkDisplay* display,GdkNativeWindow anid)
 {
-  GdkWindow *window;
+    GdkWindow *window = NULL;
+    GdkWindow              *parent =NULL;
+    GdkWindowObject       *private =NULL;
+    GdkWindowObject       *parent_private =NULL;
+    GdkWindowImplDirectFB *parent_impl =NULL;
+    GdkWindowImplDirectFB *impl =NULL;
+    DFBWindowOptions options;
+    DFBResult        ret;
+    GdkDisplayDFB * gdkdisplay =  _gdk_display;
+    IDirectFBWindow *dfbwindow;
+
+    window = gdk_window_lookup (anid);
+
+    if (window) {
+        g_object_ref (window);
+        return window;
+    }
+    if( display != NULL )
+            gdkdisplay = GDK_DISPLAY_DFB(display);
+
+    ret = gdkdisplay->layer->GetWindow (gdkdisplay->layer,
+                    (DFBWindowID)anid,&dfbwindow);
+
+    if (ret != DFB_OK) {
+        DirectFBError ("gdk_window_new: Layer->GetWindow failed", ret);
+        return NULL;
+    }
+
+    parent = _gdk_parent_root;
 
-  window = gdk_window_lookup (anid);
+    if(parent) {
+        parent_private = GDK_WINDOW_OBJECT (parent);
+        parent_impl = GDK_WINDOW_IMPL_DIRECTFB (parent_private->impl);
+    }
 
-  if (window)
+    window = g_object_new (GDK_TYPE_WINDOW, NULL);
+    /* we hold a reference count on ourselves */
     g_object_ref (window);
+    private = GDK_WINDOW_OBJECT (window);
+    private->parent = parent_private;
+    private->window_type = GDK_WINDOW_TOPLEVEL;
+    impl = GDK_WINDOW_IMPL_DIRECTFB (private->impl);
 
-  return window;
+    impl->drawable.wrapper = GDK_DRAWABLE (window);
+    impl->window = dfbwindow;
+    dfbwindow->GetOptions(dfbwindow,&options);
+    dfbwindow->GetPosition(dfbwindow,&private->x,&private->y);
+    dfbwindow->GetSize(dfbwindow,&impl->drawable.width,&impl->drawable.height);
+
+
+    private->input_only = FALSE;
+
+    if( dfbwindow->GetSurface (dfbwindow, &impl->drawable.surface) == DFB_UNSUPPORTED ){
+        private->input_only = TRUE;
+        impl->drawable.surface = NULL;
+    }
+    /*
+     * Position ourselevs
+     */
+    _gdk_directfb_calc_abs (window);
+
+    /* We default to all events least surprise to the user 
+     * minus the poll for motion events 
+     */
+    gdk_window_set_events (window, (GDK_ALL_EVENTS_MASK ^ GDK_POINTER_MOTION_HINT_MASK));
+
+    if (impl->drawable.surface)
+    {
+      impl->drawable.surface->GetPixelFormat (impl->drawable.surface,
+                                             &impl->drawable.format);
+
+         private->depth = DFB_BITS_PER_PIXEL(impl->drawable.format);
+      if( parent )
+        gdk_drawable_set_colormap (GDK_DRAWABLE (window), gdk_drawable_get_colormap (parent));
+      else
+        gdk_drawable_set_colormap (GDK_DRAWABLE (window), gdk_colormap_get_system());
+    }
+
+    //can  be null for the soft cursor window itself when
+    //running a gtk directfb wm
+    if( gdk_display_get_default() != NULL ) {
+        gdk_window_set_cursor (window,NULL);
+    }
+
+    if (parent_private)
+        parent_private->children = g_list_prepend (parent_private->children,
+                                               window);
+    impl->dfb_id = (DFBWindowID)anid; 
+    gdk_directfb_window_id_table_insert (impl->dfb_id, window);
+    gdk_directfb_event_windows_add (window);
+
+    return window;
 }
 
 GdkWindow *
@@ -2438,13 +2646,30 @@ gdk_window_lookup (GdkNativeWindow anid)
   return gdk_directfb_window_id_table_lookup ((DFBWindowID) anid);
 }
 
+IDirectFBWindow *gdk_directfb_window_lookup(GdkWindow *window )
+{
+  GdkWindowObject       *private;
+  GdkWindowImplDirectFB *impl;
+  g_return_val_if_fail (GDK_IS_WINDOW (window),NULL);
+  private = GDK_WINDOW_OBJECT (window);
+  impl = GDK_WINDOW_IMPL_DIRECTFB (private->impl);
+  return impl->window;
+}
 
+IDirectFBSurface *gdk_directfb_surface_lookup(GdkWindow *window)
+{
+  GdkWindowObject       *private;
+  GdkWindowImplDirectFB *impl;
+  g_return_val_if_fail (GDK_IS_WINDOW (window),NULL);
+  private = GDK_WINDOW_OBJECT (window);
+  impl = GDK_WINDOW_IMPL_DIRECTFB (private->impl);
+  return impl->drawable.surface;
+}
 
 void
 gdk_window_fullscreen (GdkWindow *window)
 {
   g_return_if_fail (GDK_IS_WINDOW (window));
-
   g_warning ("gdk_window_fullscreen() not implemented.\n");
 }
 
@@ -2452,8 +2677,7 @@ void
 gdk_window_unfullscreen (GdkWindow *window)
 {
   g_return_if_fail (GDK_IS_WINDOW (window));
-
-  /*  g_warning ("gdk_window_unfullscreen() not implemented.\n");*/
+  /* g_warning ("gdk_window_unfullscreen() not implemented.\n");*/
 }
 
 void