Daniel J Laird wrote:
> I have made a new change.
> 
> in src/idirectfb.c - > Destruct
> 
> /*
>  * Destructor
>  *
>  * Free data structure and set the pointer to NULL,
>  * to indicate the dead interface.
>  */
> void
> IDirectFB_Destruct( IDirectFB *thiz )
> {
>      int             i;
>      IDirectFB_data *data = (IDirectFB_data*)thiz->priv;
> 
>      D_DEBUG_AT( IDFB, "%s( %p )\n", __FUNCTION__, thiz );
> 
>      drop_window( data );
> 
>      for (i=0; i<MAX_LAYERS; i++) {
>           if (data->layers[i].context) {
>                if (data->layers[i].palette)
>                     dfb_palette_unref( data->layers[i].palette );
> 
>                D_DEBUG_AT( IDFB, "%s: Layer idx = %d\n", __FUNCTION__, i);
>                D_DEBUG_AT( IDFB, "%s: Calling dfb_surface_unref\n", 
> __FUNCTION__ );
>                dfb_surface_unref( data->layers[i].surface );
>                D_DEBUG_AT( IDFB, "%s: Calling dfb_layer_region_unref\n", 
> __FUNCTION__ );
>                dfb_layer_region_unref( data->layers[i].region );
>                D_DEBUG_AT( IDFB, "%s: Calling dfb_layer_context_unref\n", 
> __FUNCTION__ );
>                dfb_layer_context_unref( data->layers[i].context );
>           }
>      }
> 
>      D_DEBUG_AT( IDFB, "%s: Calling dfb_surface_unref DJL\n", __FUNCTION__ );
>      dfb_layer_context_unref( data->context );
> 
>      if (data->primary.context)
>      {
>          D_DEBUG_AT( IDFB, "%s: Calling dfb_layer_context_unref for 
> PRIMARY\n", __FUNCTION__ );
>          dfb_layer_context_unref( data->primary.context );
>      }
> 
>      D_DEBUG_AT( IDFB, "%s: Calling dfb_core_destroy\n", __FUNCTION__ );
>      dfb_core_destroy( data->core, false );
> 
>      idirectfb_singleton = NULL;
> 
>      DIRECT_DEALLOCATE_INTERFACE( thiz );
> 
>      direct_shutdown();
> }
> 
> I have moved the primary context_unref and data->context unref to after the 
> for loop.
> 
> From my debug this means that all resources are freed by the for loop and 
> then when it unrefs the primary context it
> does not call activate/
> 
> Are there any issues with this solution that I can't see.
> My apps all seem to be running ok but there is always at least one usecase 
> that I miss!

No, I think this looks like a good idea.

-- 
Best regards,
   Denis Oliver Kropp

.------------------------------------------.
| DirectFB - Hardware accelerated graphics |
| http://www.directfb.org/                 |
"------------------------------------------"
_______________________________________________
directfb-dev mailing list
directfb-dev@directfb.org
http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-dev

Reply via email to