Hello community,

here is the log from the commit of package DirectFB for openSUSE:Factory 
checked in at 2014-11-18 22:55:45
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/DirectFB (Old)
 and      /work/SRC/openSUSE:Factory/.DirectFB.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "DirectFB"

Changes:
--------
--- /work/SRC/openSUSE:Factory/DirectFB/DirectFB.changes        2014-08-20 
17:51:38.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.DirectFB.new/DirectFB.changes   2014-11-18 
22:55:57.000000000 +0100
@@ -1,0 +2,53 @@
+Fri Nov 14 18:47:04 UTC 2014 - [email protected]
+
+- Update to version 1.7.6
+   + StateClient: Fix double-free memory corruption.
+   StateClient object instances are stored in thread local storage. Each
+   thread can only have one instance of this object. There is however one
+   shared list inside of TLSOjbect2 that holds references to all
+   StateClient objects created in a given process. The instances of
+   StateClient can be destroyed in two ways.
+   1. Something calls dfb_gfx_cleanup().
+   2. Thread terminates.
+   In the first case the function is called once when the process using
+   directfb shuts down. This happens ony once during application life.
+   The function iterates over all StateClient objects present in the
+   TLSObject2::list and removes each one.
+   The second case libc will call the callback function passed to
+   direct_tls_register() when the thread which registered the tls object
+   terminates.
+   The problem is that while dfb_gfx_cleanup() does remove the deleted objects
+   from the TLSObject2::list, the default callback function passed to
+   direct_tls_register (TLSObject2::destructor) does not. As a result the
+   following situation will lead to a double-free memory corruption.
+   1. The application starts and initializes directfb.
+   2. At least one extra thread is started, this thread uses some dfb APIs
+      which internally create new StateClient object.
+   3. The extra thread terminates thus invokes TLSObject2::destructor.
+   4. The application exits, dfb_gfx_cleanup() is called, StateClient for the
+      extra thread is deleted for the second time.
+   The problem is nicely illustrated by valgrind. In this case dfbterm is
+   used as the application triggering the problem.
+   ==336== Invalid read of size 4
+   ==336==   at 0x4EA4120: CoreGraphicsStateClient_Deinit
+                      (CoreGraphicsStateClient.cpp:387)
+   ==336==   by 0x4F7165F: StateClient::~StateClient() (util.cpp:78)
+   ==336==   by 0x4F71A07: Direct::TLSObject2<StateClient, StateClient,
+                      StateClient>::DeleteAll() (TLSObject.h:175)
+   ==336==   by 0x4EE3130: dfb_core_shutdown (core.c:1734)
+   ==336==   by 0x4EE36F3: dfb_core_arena_shutdown (core.c:2020)
+   ==336==   by 0x4EE418C: dfb_core_destroy (core.c:472)
+   ==336==   by 0x4E969A2: IDirectFB_Destruct (idirectfb.c:307)
+   ==336==   by 0x402813: main (term.c:523)
+   ==336==  Address 0x8b37730 is 1,072 bytes inside a block of size 1,136 
free'd
+   ==336==   at 0x4C28D2C: operator delete(void*) (vg_replace_malloc.c:482)
+   ==337==   by 0x5233F81: __nptl_deallocate_tsd (pthread_create.c:158)
+   ==337==   by 0x52341E3: start_thread (pthread_create.c:325)
+   ==336==   by 0x5B7A0DC: clone (clone.S:111)
+   This bug also triggers the following assertion:
+   Assertion [(client)->magic == D_MAGIC("CoreGraphicsStateClient")] failed
+   *** [CoreGraphicsStateClient.cpp:387 in
+   CoreGraphicsStateClient_Deinit()]
+   + Screen: Add missing code for DSECONF_ASPECT_RATIO to PatchEncoderConfig
+
+-------------------------------------------------------------------

Old:
----
  DirectFB-1.7.5.tar.gz

New:
----
  DirectFB-1.7.6.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ DirectFB.spec ++++++
--- /var/tmp/diff_new_pack.uBs8Sg/_old  2014-11-18 22:55:58.000000000 +0100
+++ /var/tmp/diff_new_pack.uBs8Sg/_new  2014-11-18 22:55:58.000000000 +0100
@@ -16,12 +16,12 @@
 #
 
 
-%global directfbdir %{_libdir}/directfb-1.7-5
-%global libdirectfb    libdirectfb-1_7-5
-%global libdfb          lib++dfb-1_7-5
+%global directfbdir %{_libdir}/directfb-1.7-6
+%global libdirectfb    libdirectfb-1_7-6
+%global libdfb          lib++dfb-1_7-6
 
 Name:           DirectFB
-Version:        1.7.5
+Version:        1.7.6
 Release:        0
 Summary:        Graphics Library for Framebuffer Devices
 License:        LGPL-2.1+

++++++ DirectFB-1.7.5.tar.gz -> DirectFB-1.7.6.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/DirectFB-1.7.5/ChangeLog new/DirectFB-1.7.6/ChangeLog
--- old/DirectFB-1.7.5/ChangeLog        2014-07-28 12:02:26.000000000 +0200
+++ new/DirectFB-1.7.6/ChangeLog        2014-08-14 09:17:47.000000000 +0200
@@ -1,3 +1,85 @@
+commit 4b4ca723b8dc7d83b8cd8c709f4b0d5e7a96e06b
+Author: Denis Oliver Kropp <[email protected]>
+Date:   Thu Aug 14 09:17:21 2014 +0200
+
+    core: add missing ret variable
+
+commit b5d96d22f4dc2b5b0b340224dbd047bc1ef99918
+Author: Denis Oliver Kropp <[email protected]>
+Date:   Thu Aug 14 09:14:41 2014 +0200
+
+    Revert "Core: Add Shutdown method to run in dispatch thread, solving 
(potential) shutdown issues caused by race conditions with dispatch thread"
+    
+    This reverts commit d1267d05fb964f882b90599b8259e41a9a4e811b.
+
+commit 3332d3e908946ad21def7820f9e17015693ea258
+Author: Denis Oliver Kropp <[email protected]>
+Date:   Tue Aug 5 18:11:07 2014 +0200
+
+    [directfb-dev] [PATCH] StateClient: Fix double-free memory corruption.
+    
+    StateClient object instances are stored in thread local storage. Each
+    thread can only have one instance of this object. There is however one
+    shared list inside of TLSOjbect2 that holds references to all
+    StateClient objects created in a given process. The instances of
+    
+    StateClient can be destroyed in two ways.
+    1. Something calls dfb_gfx_cleanup().
+    2. Thread terminates.
+    
+    In the first case the function is called once when the process using
+    directfb shuts down. This happens ony once during application life.
+    The function iterates over all StateClient objects present in the
+    TLSObject2::list and removes each one.
+    
+    The second case libc will call the callback function passed to
+    direct_tls_register() when the thread which registered the tls object
+    terminates.
+    
+    The problem is that while dfb_gfx_cleanup() does remove the deleted objects
+    from the TLSObject2::list, the default callback function passed to
+    direct_tls_register (TLSObject2::destructor) does not. As a result the
+    following situation will lead to a double-free memory corruption.
+    1. The application starts and initializes directfb.
+    2. At least one extra thread is started, this thread uses some dfb APIs
+       which internally create new StateClient object.
+    3. The extra thread terminates thus invokes TLSObject2::destructor.
+    4. The application exits, dfb_gfx_cleanup() is called, StateClient for the
+       extra thread is deleted for the second time.
+    
+    The problem is nicely illustrated by valgrind. In this case dfbterm is
+    used as the application triggering the problem.
+    
+    ==336== Invalid read of size 4
+    ==336==    at 0x4EA4120: CoreGraphicsStateClient_Deinit
+                             (CoreGraphicsStateClient.cpp:387)
+    ==336==    by 0x4F7165F: StateClient::~StateClient() (util.cpp:78)
+    ==336==    by 0x4F71A07: Direct::TLSObject2<StateClient, StateClient,
+                             StateClient>::DeleteAll() (TLSObject.h:175)
+    ==336==    by 0x4EE3130: dfb_core_shutdown (core.c:1734)
+    ==336==    by 0x4EE36F3: dfb_core_arena_shutdown (core.c:2020)
+    ==336==    by 0x4EE418C: dfb_core_destroy (core.c:472)
+    ==336==    by 0x4E969A2: IDirectFB_Destruct (idirectfb.c:307)
+    ==336==    by 0x402813: main (term.c:523)
+    ==336==  Address 0x8b37730 is 1,072 bytes inside a block of size 1,136 
free'd
+    ==336==    at 0x4C28D2C: operator delete(void*) (vg_replace_malloc.c:482)
+    ==337==    by 0x5233F81: __nptl_deallocate_tsd (pthread_create.c:158)
+    ==337==    by 0x52341E3: start_thread (pthread_create.c:325)
+    ==336==    by 0x5B7A0DC: clone (clone.S:111)
+    
+    This bug also triggers the following assertion:
+    Assertion [(client)->magic == D_MAGIC("CoreGraphicsStateClient")] failed
+    *** [CoreGraphicsStateClient.cpp:387 in
+    CoreGraphicsStateClient_Deinit()]
+    
+    This patch is also applicable for directfb-1.7 branch.
+
+commit 650773f3b0a08be053687d9bffac6746fe9fe287
+Author: Denis Oliver Kropp <[email protected]>
+Date:   Mon Jul 28 12:02:50 2014 +0200
+
+    update changelog
+
 commit a1a930c40f3ecdde7e1fa327a023a1eacff66a6c
 Author: Denis Oliver Kropp <[email protected]>
 Date:   Thu Jul 24 13:08:45 2014 +0200
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/DirectFB-1.7.5/configure new/DirectFB-1.7.6/configure
--- old/DirectFB-1.7.5/configure        2014-07-24 11:21:03.000000000 +0200
+++ new/DirectFB-1.7.6/configure        2014-08-14 09:22:05.000000000 +0200
@@ -3272,7 +3272,7 @@
 #
 DIRECTFB_MAJOR_VERSION=1
 DIRECTFB_MINOR_VERSION=7
-DIRECTFB_MICRO_VERSION=5
+DIRECTFB_MICRO_VERSION=6
 DIRECTFB_INTERFACE_AGE=0
 DIRECTFB_BINARY_AGE=0
 
DIRECTFB_VERSION=$DIRECTFB_MAJOR_VERSION.$DIRECTFB_MINOR_VERSION.$DIRECTFB_MICRO_VERSION
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/DirectFB-1.7.5/configure.in 
new/DirectFB-1.7.6/configure.in
--- old/DirectFB-1.7.5/configure.in     2014-07-24 11:20:24.000000000 +0200
+++ new/DirectFB-1.7.6/configure.in     2014-08-14 09:19:24.000000000 +0200
@@ -16,7 +16,7 @@
 #
 DIRECTFB_MAJOR_VERSION=1
 DIRECTFB_MINOR_VERSION=7
-DIRECTFB_MICRO_VERSION=5
+DIRECTFB_MICRO_VERSION=6
 DIRECTFB_INTERFACE_AGE=0
 DIRECTFB_BINARY_AGE=0
 
DIRECTFB_VERSION=$DIRECTFB_MAJOR_VERSION.$DIRECTFB_MINOR_VERSION.$DIRECTFB_MICRO_VERSION
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/DirectFB-1.7.5/directfb.spec 
new/DirectFB-1.7.6/directfb.spec
--- old/DirectFB-1.7.5/directfb.spec    2014-07-24 11:22:33.000000000 +0200
+++ new/DirectFB-1.7.6/directfb.spec    2014-08-14 09:22:23.000000000 +0200
@@ -1,5 +1,5 @@
 %define name directfb
-%define version 1.7.5
+%define version 1.7.6
 %define oname DirectFB
 %define libname lib%name
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/DirectFB-1.7.5/include/directfb_version.h 
new/DirectFB-1.7.6/include/directfb_version.h
--- old/DirectFB-1.7.5/include/directfb_version.h       2014-07-24 
11:22:34.000000000 +0200
+++ new/DirectFB-1.7.6/include/directfb_version.h       2014-08-14 
09:22:23.000000000 +0200
@@ -31,7 +31,7 @@
 
 #define DIRECTFB_MAJOR_VERSION  (1)
 #define DIRECTFB_MINOR_VERSION  (7)
-#define DIRECTFB_MICRO_VERSION  (5)
+#define DIRECTFB_MICRO_VERSION  (6)
 #define DIRECTFB_BINARY_AGE     (0)
 #define DIRECTFB_INTERFACE_AGE  (0)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/DirectFB-1.7.5/lib/fusiondale/fusiondale_version.h 
new/DirectFB-1.7.6/lib/fusiondale/fusiondale_version.h
--- old/DirectFB-1.7.5/lib/fusiondale/fusiondale_version.h      2014-07-24 
11:22:41.000000000 +0200
+++ new/DirectFB-1.7.6/lib/fusiondale/fusiondale_version.h      2014-08-14 
09:22:23.000000000 +0200
@@ -26,7 +26,7 @@
 
 #define FUSIONDALE_MAJOR_VERSION  (1)
 #define FUSIONDALE_MINOR_VERSION  (7)
-#define FUSIONDALE_MICRO_VERSION  (5)
+#define FUSIONDALE_MICRO_VERSION  (6)
 #define FUSIONDALE_BINARY_AGE     (0)
 #define FUSIONDALE_INTERFACE_AGE  (0)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/DirectFB-1.7.5/lib/fusionsound/fusionsound_version.h 
new/DirectFB-1.7.6/lib/fusionsound/fusionsound_version.h
--- old/DirectFB-1.7.5/lib/fusionsound/fusionsound_version.h    2014-07-24 
11:22:43.000000000 +0200
+++ new/DirectFB-1.7.6/lib/fusionsound/fusionsound_version.h    2014-08-14 
09:22:24.000000000 +0200
@@ -30,7 +30,7 @@
 
 #define FUSIONSOUND_MAJOR_VERSION  (1)
 #define FUSIONSOUND_MINOR_VERSION  (7)
-#define FUSIONSOUND_MICRO_VERSION  (5)
+#define FUSIONSOUND_MICRO_VERSION  (6)
 #define FUSIONSOUND_BINARY_AGE     (0)
 #define FUSIONSOUND_INTERFACE_AGE  (0)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/DirectFB-1.7.5/src/core/CoreDFB.cpp 
new/DirectFB-1.7.6/src/core/CoreDFB.cpp
--- old/DirectFB-1.7.5/src/core/CoreDFB.cpp     2014-07-24 11:24:20.000000000 
+0200
+++ new/DirectFB-1.7.6/src/core/CoreDFB.cpp     2014-08-14 09:15:36.000000000 
+0200
@@ -478,40 +478,6 @@
     return DFB_UNIMPLEMENTED;
 }
 
-DFBResult
-CoreDFB_Shutdown(
-                    CoreDFB                                   *obj
-
-)
-{
-    DFBResult ret;
-
-    switch (CoreDFB_CallMode( core_dfb )) {
-        case COREDFB_CALL_DIRECT:{
-            DirectFB::ICore_Real real( core_dfb, obj );
-
-            Core_PushCalling();
-            ret = real.Shutdown(  );
-            Core_PopCalling();
-
-            return ret;
-        }
-        case COREDFB_CALL_INDIRECT: {
-            DirectFB::ICore_Requestor requestor( core_dfb, obj );
-
-            Core_PushCalling();
-            ret = requestor.Shutdown(  );
-            Core_PopCalling();
-
-            return ret;
-        }
-        case COREDFB_CALL_DENY:
-            return DFB_DEAD;
-    }
-
-    return DFB_UNIMPLEMENTED;
-}
-
 
/*********************************************************************************************************************/
 
 static FusionCallHandlerResult
@@ -1208,52 +1174,6 @@
     return ret;
 }
 
-
-DFBResult
-ICore_Requestor::Shutdown(
-
-)
-{
-    DFBResult           ret = DFB_OK;
-    char        args_static[FLUXED_ARGS_BYTES];
-    char        return_args_static[FLUXED_ARGS_BYTES];
-    CoreDFBShutdown       *args = (CoreDFBShutdown*) args_alloc( args_static, 
sizeof(CoreDFBShutdown) );
-    CoreDFBShutdownReturn *return_args;
-
-    if (!args)
-        return (DFBResult) D_OOM();
-
-    return_args = (CoreDFBShutdownReturn*) args_alloc( return_args_static, 
sizeof(CoreDFBShutdownReturn) );
-
-    if (!return_args) {
-        args_free( args_static, args );
-        return (DFBResult) D_OOM();
-    }
-
-    D_DEBUG_AT( DirectFB_CoreDFB, "ICore_Requestor::%s()\n", __FUNCTION__ );
-
-
-
-    ret = (DFBResult) CoreDFB_Call( obj, FCEF_NONE, CoreDFB_Shutdown, args, 
sizeof(CoreDFBShutdown), return_args, sizeof(CoreDFBShutdownReturn), NULL );
-    if (ret) {
-        D_DERROR( ret, "%s: CoreDFB_Call( CoreDFB_Shutdown ) failed!\n", 
__FUNCTION__ );
-        goto out;
-    }
-
-    if (return_args->result) {
-        /*D_DERROR( return_args->result, "%s: CoreDFB_Shutdown failed!\n", 
__FUNCTION__ );*/
-        ret = return_args->result;
-        goto out;
-    }
-
-
-
-out:
-    args_free( return_args_static, return_args );
-    args_free( args_static, args );
-    return ret;
-}
-
 
/*********************************************************************************************************************/
 
 static DFBResult
@@ -1505,22 +1425,6 @@
 
             return DFB_OK;
         }
-
-        case CoreDFB_Shutdown: {
-            D_UNUSED
-            CoreDFBShutdown       *args        = (CoreDFBShutdown *) ptr;
-            CoreDFBShutdownReturn *return_args = (CoreDFBShutdownReturn *) 
ret_ptr;
-
-            D_DEBUG_AT( DirectFB_CoreDFB, "=-> CoreDFB_Shutdown\n" );
-
-            return_args->result = real.Shutdown(  );
-            if (return_args->result == DFB_OK) {
-            }
-
-            *ret_length = sizeof(CoreDFBShutdownReturn);
-
-            return DFB_OK;
-        }
 
     }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/DirectFB-1.7.5/src/core/CoreDFB.h 
new/DirectFB-1.7.6/src/core/CoreDFB.h
--- old/DirectFB-1.7.5/src/core/CoreDFB.h       2014-07-24 11:24:20.000000000 
+0200
+++ new/DirectFB-1.7.6/src/core/CoreDFB.h       2014-08-14 09:15:36.000000000 
+0200
@@ -111,10 +111,6 @@
                     CoreDFB                                   *obj
 );
 
-DFBResult CoreDFB_Shutdown(
-                    CoreDFB                                   *obj
-);
-
 
 void CoreDFB_Init_Dispatch(
                     CoreDFB              *core,
@@ -150,7 +146,6 @@
     CoreDFB_ClipboardGet = 10,
     CoreDFB_ClipboardGetTimestamp = 11,
     CoreDFB_Roundtrip = 12,
-    CoreDFB_Shutdown = 13,
 } CoreDFBCall;
 
 /*
@@ -316,17 +311,6 @@
 } CoreDFBRoundtripReturn;
 
 
-/*
- * CoreDFB_Shutdown
- */
-typedef struct {
-} CoreDFBShutdown;
-
-typedef struct {
-    DFBResult                                  result;
-} CoreDFBShutdownReturn;
-
-
 
 
 
@@ -404,10 +388,6 @@
 
     ) = 0;
 
-    virtual DFBResult Shutdown(
-
-    ) = 0;
-
 };
 
 
@@ -489,10 +469,6 @@
 
     );
 
-    virtual DFBResult Shutdown(
-
-    );
-
 };
 
 
@@ -575,10 +551,6 @@
 
     );
 
-    virtual DFBResult Shutdown(
-
-    );
-
 };
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/DirectFB-1.7.5/src/core/CoreDFB_real.cpp 
new/DirectFB-1.7.6/src/core/CoreDFB_real.cpp
--- old/DirectFB-1.7.5/src/core/CoreDFB_real.cpp        2014-07-24 
11:20:24.000000000 +0200
+++ new/DirectFB-1.7.6/src/core/CoreDFB_real.cpp        2014-08-14 
09:14:41.000000000 +0200
@@ -81,20 +81,6 @@
 }
 
 DFBResult
-ICore_Real::Shutdown(
-)
-{
-    D_DEBUG_AT( DirectFB_CoreDFB, "ICore_Real::%s()\n", __FUNCTION__ );
-
-    D_MAGIC_ASSERT( obj, CoreDFB );
-
-    if (Core_GetIdentity() != FUSION_ID_MASTER)
-         return DFB_ACCESSDENIED;
-
-    return (DFBResult) dfb_core_shutdown( core, false );
-}
-
-DFBResult
 ICore_Real::Register(
      u32                       slave_call
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/DirectFB-1.7.5/src/core/core.c 
new/DirectFB-1.7.6/src/core/core.c
--- old/DirectFB-1.7.5/src/core/core.c  2014-07-24 11:20:24.000000000 +0200
+++ new/DirectFB-1.7.6/src/core/core.c  2014-08-14 09:16:14.000000000 +0200
@@ -1702,10 +1702,12 @@
      return true;
 }
 
-int
+static int
 dfb_core_shutdown( CoreDFB *core, bool emergency )
 {
+     DFBResult      ret;
      CoreDFBShared *shared;
+     int            loops = 10;
 
      D_MAGIC_ASSERT( core, CoreDFB );
 
@@ -1729,18 +1731,30 @@
 
      dfb_core_enum_layer_regions( core, region_callback, core );
 
-     dfb_core_part_shutdown( core, &dfb_screen_core, emergency );
+
+     fusion_stop_dispatcher( core->world, false );
 
      dfb_gfx_cleanup();
 
-     if (direct_config_get_int_value( "shutdown-info" )) {
-          D_ERROR( "DirectFB/Core: Some objects remain alive, application or 
internal ref counting issue!\n" );
+     while (loops--) {
+          fusion_dispatch( core->world, 16384 );
 
-          dfb_core_dump_all( core, &DirectFB_Core, DIRECT_LOG_VERBOSE );
+          ret = dfb_core_wait_all( core, 10000 );
+          if (ret == DFB_OK)
+               break;
 
-          direct_print_interface_leaks();
+          dfb_gfx_cleanup();
      }
 
+     if (ret == DFB_TIMEOUT) {
+          if (direct_config_get_int_value( "shutdown-info" )) {
+               D_ERROR( "DirectFB/Core: Some objects remain alive, application 
or internal ref counting issue!\n" );
+
+               dfb_core_dump_all( core, &DirectFB_Core, DIRECT_LOG_VERBOSE );
+
+               direct_print_interface_leaks();
+          }
+     }
 
      /* Destroy window objects. */
      fusion_object_pool_destroy( shared->window_pool, core->world );
@@ -1750,6 +1764,8 @@
      if (dfb_wm_core.initialized)
           dfb_wm_close_all_stacks( dfb_wm_core.data_local );
 
+     CoreDFB_Deinit_Dispatch( &shared->call );
+
      /* Destroy layer context and region objects. */
      fusion_object_pool_destroy( shared->layer_region_pool, core->world );
      fusion_object_pool_destroy( shared->layer_context_pool, core->world );
@@ -1759,6 +1775,7 @@
 
      /* Shutdown layer core. */
      dfb_core_part_shutdown( core, &dfb_layer_core, emergency );
+     dfb_core_part_shutdown( core, &dfb_screen_core, emergency );
 
      TaskManager_SyncAll();
 
@@ -2009,9 +2026,7 @@
      }
 
      /* Shutdown. */
-     ret = CoreDFB_Shutdown( core );
-
-     CoreDFB_Deinit_Dispatch( &shared->call );
+     ret = dfb_core_shutdown( core, emergency );
 
      fusion_hash_destroy( shared->field_hash );
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/DirectFB-1.7.5/src/core/core.h 
new/DirectFB-1.7.6/src/core/core.h
--- old/DirectFB-1.7.5/src/core/core.h  2014-07-24 11:20:24.000000000 +0200
+++ new/DirectFB-1.7.6/src/core/core.h  2014-08-14 09:14:41.000000000 +0200
@@ -88,9 +88,6 @@
 
 DFBResult dfb_core_initialize( CoreDFB *core );
 
-int       dfb_core_shutdown  ( CoreDFB *core,
-                               bool     emergency );
-
 
 /*
  * Object creation
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/DirectFB-1.7.5/src/gfx/util.cpp 
new/DirectFB-1.7.6/src/gfx/util.cpp
--- old/DirectFB-1.7.5/src/gfx/util.cpp 2014-07-24 11:20:24.000000000 +0200
+++ new/DirectFB-1.7.6/src/gfx/util.cpp 2014-08-14 09:05:29.000000000 +0200
@@ -87,13 +87,24 @@
 
      static void destroy( void *ctx, StateClient *client )
      {
-          delete client;
+          _tls.Delete();
      }
-};
 
+     static StateClient* Get()
+     {
+          return _tls.Get();
+     }
 
-static Direct::TLSObject2<StateClient> state_client_tls;
+     static void DeleteAll()
+     {
+          _tls.DeleteAll();
+     }
+
+private:
+     static Direct::TLSObject2<StateClient> _tls;
+};
 
+Direct::TLSObject2<StateClient> StateClient::_tls;
 
 extern "C" {
 
@@ -101,13 +112,13 @@
 void
 dfb_gfx_init_tls()
 {
-     state_client_tls.Get();
+     StateClient::Get();
 }
 
 void
 dfb_gfx_cleanup()
 {
-     state_client_tls.DeleteAll();
+     StateClient::DeleteAll();
 }
 
 void
@@ -139,7 +150,7 @@
 {
      DFBRectangle sourcerect = { 0, 0, source->config.size.w, 
source->config.size.h };
 
-     StateClient *client = state_client_tls.Get();
+     StateClient *client = StateClient::Get();
 
      D_FLAGS_SET( client->state.modified, SMF_CLIP | SMF_SOURCE | 
SMF_DESTINATION | SMF_FROM | SMF_TO );
 
@@ -179,7 +190,7 @@
 {
      DFBRectangle rect = { 0, 0, surface->config.size.w, 
surface->config.size.h };
 
-     StateClient *client = state_client_tls.Get();
+     StateClient *client = StateClient::Get();
 
      D_FLAGS_SET( client->state.modified, SMF_CLIP | SMF_COLOR | 
SMF_DESTINATION | SMF_TO );
 
@@ -232,7 +243,7 @@
                return;
      }
 
-     StateClient *client = state_client_tls.Get();
+     StateClient *client = StateClient::Get();
 
      D_FLAGS_SET( client->state.modified, SMF_CLIP | SMF_SOURCE | 
SMF_DESTINATION | SMF_FROM | SMF_TO );
 
@@ -300,7 +311,7 @@
      }
 
      if (n > 0) {
-          StateClient *client = state_client_tls.Get();
+          StateClient *client = StateClient::Get();
 
           D_FLAGS_SET( client->state.modified, SMF_CLIP | SMF_SOURCE | 
SMF_DESTINATION | SMF_FROM | SMF_TO );
 
@@ -342,7 +353,7 @@
      DFBRectangle             rect = { 0, 0, source->config.size.w, 
source->config.size.h };
      DFBRectangle             rects[num];
      DFBPoint                 points[num];
-     CoreGraphicsStateClient *client = _client ? _client : 
&state_client_tls.Get()->client;
+     CoreGraphicsStateClient *client = _client ? _client : 
&StateClient::Get()->client;
      CardState               *state  = client->state;
      CardState                backup;
 
@@ -413,7 +424,7 @@
 {
      DFBRectangle  rect;
      DFBPoint      point;
-     StateClient  *client = state_client_tls.Get();
+     StateClient  *client = StateClient::Get();
 
 
      if (region) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/DirectFB-1.7.5/src/media/DataBuffer.cpp 
new/DirectFB-1.7.6/src/media/DataBuffer.cpp
--- old/DirectFB-1.7.5/src/media/DataBuffer.cpp 2014-07-11 23:05:01.000000000 
+0200
+++ new/DirectFB-1.7.6/src/media/DataBuffer.cpp 2014-01-22 17:08:31.000000000 
+0100
@@ -33,8 +33,6 @@
 
 #include <config.h>
 
-#include <direct/Types++.h>
-
 #include "DataBuffer.h"
 
 extern "C" {

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to