--- wm/unique/uniquewm.c.orig	2012-06-14 18:00:08.000000000 +0200
+++ wm/unique/uniquewm.c	2012-06-17 13:44:30.032201512 +0200
@@ -38,6 +38,8 @@
 #include <core/surface.h>
 #include <core/surface_buffer.h>
 
+#include <fusion/fusion.h>
+
 #include <unique/context.h>
 #include <unique/decoration.h>
 #include <unique/internal.h>
@@ -275,7 +277,7 @@
      D_MAGIC_ASSERT( wm_shared, WMShared );
      D_ASSERT( wm_shared->context_pool != NULL );
 
-     return (UniqueContext*) fusion_object_create( wm_shared->context_pool, wm_data->world );
+     return (UniqueContext*) fusion_object_create( wm_shared->context_pool, wm_data->world, fusion_id(wm_data->world) );
 }
 
 UniqueDecoration *
@@ -286,7 +288,7 @@
      D_MAGIC_ASSERT( wm_shared, WMShared );
      D_ASSERT( wm_shared->decoration_pool != NULL );
 
-     return (UniqueDecoration*) fusion_object_create( wm_shared->decoration_pool, wm_data->world );
+     return (UniqueDecoration*) fusion_object_create( wm_shared->decoration_pool, wm_data->world, fusion_id(wm_data->world) );
 }
 
 UniqueWindow *
@@ -297,7 +299,7 @@
      D_MAGIC_ASSERT( wm_shared, WMShared );
      D_ASSERT( wm_shared->window_pool != NULL );
 
-     return (UniqueWindow*) fusion_object_create( wm_shared->window_pool, wm_data->world );
+     return (UniqueWindow*) fusion_object_create( wm_shared->window_pool, wm_data->world, fusion_id(wm_data->world) );
 }
 
 /**************************************************************************************************/
--- wm/unique/test_foo.c.orig	2013-07-09 00:23:17.000000000 +0200
+++ wm/unique/test_foo.c	2013-07-14 11:21:12.167080126 +0200
@@ -143,7 +143,7 @@
      shared = context->shared;
      D_MAGIC_ASSERT( shared, WMShared );
 
-     dfb_layer_context_lock( region->context );
+     dfb_layer_region_lock( region ); // ???
 
      switch (event->type) {
           case UIET_MOTION:
@@ -180,7 +180,7 @@
                break;
      }
 
-     dfb_layer_context_unlock( region->context );
+     dfb_layer_region_unlock( region );
 
      return RS_OK;
 }
--- gfxdrivers/cle266/uc_primary.c.orig	2012-06-14 18:00:08.000000000 +0200
+++ gfxdrivers/cle266/uc_primary.c	2012-06-17 21:53:26.644303701 +0200
@@ -138,7 +138,8 @@
               CoreLayerRegionConfigFlags  updated,
               CoreSurface                *surface,
               CorePalette                *palette,
-              CoreSurfaceBufferLock      *lock )
+              CoreSurfaceBufferLock      *left_lock,
+	      CoreSurfaceBufferLock      *right_lock)
 {
      DFBResult     ret;
      UcDriverData *ucdrv = (UcDriverData*) driver_data;
@@ -147,7 +148,7 @@
      ret = ucOldPrimaryFuncs.SetRegion( layer, ucOldPrimaryDriverData,
                                         layer_data, region_data,
                                         config, updated, surface,
-                                        palette, lock );
+                                        palette, left_lock, right_lock );
      if (ret)
           return ret;
 
--- gfxdrivers/cle266/uc_overlay.c.orig	2013-01-12 06:06:23.000000000 +0100
+++ gfxdrivers/cle266/uc_overlay.c	2013-07-14 13:35:19.513409077 +0200
@@ -246,7 +246,7 @@
     dfb_surface_flip(surface, false);
 
     ucovl->field = 0;
-    ucovl->lock = lock;
+    ucovl->lock = left_lock;
 
     ret = uc_ovl_update(ucdrv, ucovl, UC_OVL_FLIP, surface, left_lock);
     if (ret)
--- gfxdrivers/cyber5k/cyber5k.c.orig	2012-06-14 18:00:08.000000000 +0200
+++ gfxdrivers/cyber5k/cyber5k.c	2012-06-18 18:24:36.821203665 +0200
@@ -636,7 +636,8 @@
               CoreLayerRegionConfigFlags  updated,
               CoreSurface                *surface,
               CorePalette                *palette,
-              CoreSurfaceBufferLock      *lock )
+              CoreSurfaceBufferLock      *left_lock,
+              CoreSurfaceBufferLock      *right_lock )
 {
      DFBResult ret;
 
@@ -644,7 +645,7 @@
      ret = oldPrimaryFuncs.SetRegion( layer, oldPrimaryDriverData,
                                       layer_data, region_data,
                                       config, updated, surface,
-                                      palette, lock );
+                                      palette, left_lock, right_lock );
      if (ret)
           return ret;
 
--- gfxdrivers/radeon/radeon_crtc1.c.orig	2012-06-14 18:00:08.000000000 +0200
+++ gfxdrivers/radeon/radeon_crtc1.c	2012-06-18 18:37:26.694504689 +0200
@@ -147,14 +147,15 @@
                 CoreLayerRegionConfigFlags  updated,
                 CoreSurface                *surface,
                 CorePalette                *palette,
-                CoreSurfaceBufferLock      *lock )
+                CoreSurfaceBufferLock      *left_lock,
+		CoreSurfaceBufferLock      *right_lock)
 {
      
      if (updated & ~CLRCF_OPTIONS) {
           return OldPrimaryLayerFuncs.SetRegion( layer,
                                                  OldPrimaryLayerDriverData,
                                                  layer_data, region_data,
-                                                 config, updated, surface, palette, lock );
+                                                 config, updated, surface, palette, left_lock, right_lock );
      }
 
      return DFB_OK;
--- gfxdrivers/savage/savage_streams_old.c.orig	2013-07-09 00:23:17.000000000 +0200
+++ gfxdrivers/savage/savage_streams_old.c	2013-07-14 14:25:41.743282243 +0200
@@ -347,7 +347,8 @@
                           CoreLayerRegionConfigFlags  updated,
                           CoreSurface                *surface,
                           CorePalette                *palette,
-                          CoreSurfaceBufferLock      *lock )
+                          CoreSurfaceBufferLock      *lock,
+                          CoreSurfaceBufferLock      *right_lock )
 {
      SavageDriverData *sdrv = (SavageDriverData*) driver_data;
      SavageSecondaryLayerData *slay = (SavageSecondaryLayerData*) layer_data;
@@ -756,7 +757,8 @@
                         CoreLayerRegionConfigFlags  updated,
                         CoreSurface                *surface,
                         CorePalette                *palette,
-                        CoreSurfaceBufferLock      *lock )
+                        CoreSurfaceBufferLock      *lock,
+                        CoreSurfaceBufferLock      *right_lock )
 {
      SavageDriverData *sdrv = (SavageDriverData*) driver_data;
      SavagePrimaryLayerData *play = (SavagePrimaryLayerData*) layer_data;
@@ -767,7 +769,7 @@
             DFB_BYTES_PER_PIXEL(config->format) * 8);
 
      ret = savage_pfuncs.SetRegion(layer, driver_data, layer_data, region_data,
-                                   config, updated, surface, palette, lock);
+                                   config, updated, surface, palette, lock, right_lock);
      if (ret != DFB_OK)
           return ret;
 
--- gfxdrivers/unichrome/uc_primary.c.orig	2013-07-09 00:23:17.000000000 +0200
+++ gfxdrivers/unichrome/uc_primary.c	2013-07-14 15:06:06.646513815 +0200
@@ -139,7 +139,8 @@
               CoreLayerRegionConfigFlags  updated,
               CoreSurface                *surface,
               CorePalette                *palette,
-              CoreSurfaceBufferLock      *lock )
+              CoreSurfaceBufferLock      *lock,
+              CoreSurfaceBufferLock      *right_lock )
 {
      DFBResult     ret;
      UcDriverData *ucdrv = (UcDriverData*) driver_data;
@@ -148,7 +149,7 @@
      ret = ucOldPrimaryFuncs.SetRegion( layer, ucOldPrimaryDriverData,
                                         layer_data, region_data,
                                         config, updated, surface,
-                                        palette, lock );
+                                        palette, lock, right_lock );
      if (ret)
           return ret;
 
--- gfxdrivers/unichrome/uc_spic.c.orig	2011-08-11 13:29:49.000000000 +0200
+++ gfxdrivers/unichrome/uc_spic.c	2013-07-14 15:14:06.013160364 +0200
@@ -143,7 +143,8 @@
                     CoreLayerRegionConfigFlags  updated,
                     CoreSurface                *surface,
                     CorePalette                *palette,
-                    CoreSurfaceBufferLock      *lock )
+                    CoreSurfaceBufferLock      *lock,
+                    CoreSurfaceBufferLock      *right_lock )
 {
     UcDriverData*  ucdrv = (UcDriverData*) driver_data;
 
@@ -173,7 +174,10 @@
                      void                  *region_data,
                      CoreSurface           *surface,
                      DFBSurfaceFlipFlags    flags,
-                     CoreSurfaceBufferLock *lock )
+		     const DFBRegion       *left_update,
+                     CoreSurfaceBufferLock *lock,
+		     const DFBRegion       *right_update,
+                     CoreSurfaceBufferLock *right_lock )
 {
     UcDriverData*  ucdrv = (UcDriverData*) driver_data;
 
