diff --recursive --show-c-function --unified a/src/core/layer_context.c b/src/core/layer_context.c
--- a/src/core/layer_context.c	2010-02-01 15:21:27.000000000 -0800
+++ b/src/core/layer_context.c	2010-03-09 09:18:19.000000000 -0800
@@ -826,8 +826,22 @@ dfb_layer_context_set_configuration( Cor
           {
                update_stack_geometry( context );
 
-               /* FIXME: call only if really needed */
-               dfb_windowstack_repaint_all( stack );
+               // Fixed window stack repainting to NOT be performed when the 
+               // region is frozen, because a frozen display layer should not 
+               // be allocated and made visible until absolutely necessary 
+               // (when single buffered IDirectFBDisplayLayer::GetSurface is 
+               // called, and when double/triple buffered whe 
+               // IDirectFBSurface::Flip is called).  This prevents a display 
+               // layer surface flip from being done and showing an 
+               // uninitialized buffer when the 
+               // IDirectFB::GetDisplayLayer function is called without an 
+               // associated init-layer directfbrc command.
+               if (context->primary.region && 
+                   !D_FLAGS_IS_SET( 
+                         context->primary.region->state, 
+                         CLRSF_FROZEN )) {
+                    dfb_windowstack_repaint_all( stack );
+               }
           }
      }
 
diff --recursive --show-c-function --unified a/src/display/idirectfbdisplaylayer.c b/src/display/idirectfbdisplaylayer.c
--- a/src/display/idirectfbdisplaylayer.c	2010-02-01 15:21:27.000000000 -0800
+++ b/src/display/idirectfbdisplaylayer.c	2010-03-09 09:19:30.000000000 -0800
@@ -183,9 +183,24 @@ IDirectFBDisplayLayer_GetSurface( IDirec
      ret = IDirectFBSurface_Layer_Construct( surface, NULL, NULL, NULL,
                                              region, DSCAPS_NONE, data->core );
 
-     if (region->config.buffermode == DLBM_FRONTONLY && data->level == DLSCL_EXCLUSIVE) {
-          surface->Clear( surface, 0, 0, 0, 0 );
-          dfb_layer_region_flip_update( region, NULL, DSFLIP_NONE );
+     // Fix to only perform single buffered clearing using a background when 
+     // configured to do so AND the display layer region is frozen.  Also 
+     // added support for this behavior when the cooperative level is 
+     // DLSCL_ADMINISTRATIVE.
+     if (region->config.buffermode == DLBM_FRONTONLY && 
+         data->level != DLSCL_SHARED && 
+         D_FLAGS_IS_SET( region->state, CLRSF_FROZEN )) {
+          // If a window stack is available, give it the opportunity to 
+          // render the background (optionally based on configuration) and 
+          // flip the display layer so it is visible.  Otherwise, just 
+          // directly flip the display layer and make it visible.
+          D_ASSERT( region->context );
+          if (region->context->stack) {
+               dfb_windowstack_repaint_all( region->context->stack );
+          }
+          else {
+               dfb_layer_region_flip_update( region, NULL, DSFLIP_NONE );
+          }
      }
 
      *interface = ret ? NULL : surface;
diff --recursive --show-c-function --unified a/src/idirectfb.c b/src/idirectfb.c
--- a/src/idirectfb.c	2010-02-01 15:21:27.000000000 -0800
+++ b/src/idirectfb.c	2010-03-10 15:01:13.000000000 -0800
@@ -52,6 +52,7 @@
 #include <core/layer_control.h>
 #include <core/layer_region.h>
 #include <core/layers.h>
+#include <core/layers_internal.h>
 #include <core/palette.h>
 #include <core/screen.h>
 #include <core/screens.h>
@@ -756,10 +757,26 @@ IDirectFB_CreateSurface( IDirectFB      
 
                     init_palette( surface, desc );
 
-                    /* Force initial update to unfreeze region as no Flip() may come from application. */
-                    if (!(caps & DSCAPS_FLIPPING))
-                         dfb_layer_region_flip_update( region, NULL, DSFLIP_NONE );
-
+                    /* Make a single buffered primary display layer visible
+                     * since the IDirectFB::GetDisplayLayer automatic flip
+                     * defect fix prevents flipping when the region is frozen.
+                     */
+                    if (config.buffermode != DLBM_BACKVIDEO && 
+                        config.buffermode != DLBM_TRIPLE) {
+                         /* If a window stack is available, give it the
+                          * opportunity to render the background (optionally
+                          * based on configuration) and flip the display layer
+                          * so it is visible.  Otherwise, just directly flip
+                          * the display layer and make it visible.
+                          */
+                         D_ASSERT( region->context );
+                         if (region->context->stack) {
+                              dfb_windowstack_repaint_all( region->context->stack );
+                         }
+                         else {
+                              dfb_layer_region_flip_update( region, NULL, DSFLIP_NONE );
+                         }
+                    }
 
                     DIRECT_ALLOCATE_INTERFACE( iface, IDirectFBSurface );
 
