Ok, i'll apply the revised version (the one with DFB version check) of 
Simon's patch today.
If the patch should be refined later, i'll take care of that too.
BTW, having the patch available in official releases will help spotting 
bugs and issues.

regards

Attilio

Mike Emmel wrote:
> Attillio this looks reasonable and I know I'm just writing but I did
> look at it week before last I think when it first came through.
> 
> Can you apply it.  I have one week to  port a HTML engine so I'm a tad 
> busy.
> 
> I'm sorry a few good patches rolled in last week and I tried to get to
> where I could apply them.
> 
> 
> On 7/9/07, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
>> Attilio Fiandrotti wrote:
>> > I just tested Simon's patch on gtk+ 2-10 branch and DFB 1.0 and it
>> > actually fixes memory leaks which oterwise would occourr when
>> destroying
>> > windows. The patch seems also to be stable: i had along GIMP session
>> and
>> > experienced no crashes. Because DirectFB >= 1.0 is needed for the
>> patch
>> > to work, i added the #ifdef's you find in this > mail's attachment
>> > (it's Simon's original patch with #ifdef's aded where needed).
>> > I think this patch should be applied also to gtk+ trunk, of course.
>>
>> Sorry for bothering you again with this issue, but there is one thing
>> I'm
>> currently not sure about: before we call
>> gdk_directfb_event_windows_remove()
>> in _gdk_windowing_window_destroy() and detach from the event buffer, the
>> CoreWindow must already have been destroyed (otherwise we seem to lose
>> the
>> DWET_DESTROYED message that triggers the call of
>> gdk_window_destroy_notify().
>>
>> Here is the _gdk_windowing_window_destroy() function (see comments):
>>
>> void
>> _gdk_windowing_window_destroy (GdkWindow *window,
>>                                gboolean   recursing,
>>                                gboolean   foreign_destroy)
>> {
>>   GdkWindowObject       *private;
>>   GdkWindowImplDirectFB *impl;
>>
>>   g_return_if_fail (GDK_IS_WINDOW (window));
>>
>>   private = GDK_WINDOW_OBJECT (window);
>>   impl = GDK_WINDOW_IMPL_DIRECTFB (private->impl);
>>
>>   _gdk_selection_window_destroyed (window);
>>
>> /// With my last patch, we call it here ///
>> //  gdk_directfb_event_windows_remove (window);
>>
>>   if (window == _gdk_directfb_pointer_grab_window)
>>     gdk_pointer_ungrab (GDK_CURRENT_TIME);
>>   if (window == _gdk_directfb_keyboard_grab_window)
>>     gdk_keyboard_ungrab (GDK_CURRENT_TIME);
>>
>>   if (window == gdk_directfb_focused_window)
>>     gdk_directfb_change_focus (NULL);
>>
>>
>>   if (impl->drawable.surface) {
>>     GdkDrawableImplDirectFB *dimpl = GDK_DRAWABLE_IMPL_DIRECTFB
>> (private->impl);
>>     if(dimpl->cairo_surface) {
>>       cairo_surface_destroy(dimpl->cairo_surface);
>>       dimpl->cairo_surface= NULL;
>>     }
>>     impl->drawable.surface->Release (impl->drawable.surface);
>>     impl->drawable.surface = NULL;
>>   }
>>
>>   if (!recursing && !foreign_destroy && impl->window ) {
>>         impl->window->SetOpacity (impl->window,0);
>>         impl->window->Close(impl->window);
>>
>> /// Or would it be better to first destroy the window and call it here?
>> ///
>>         impl->window->Destroy(impl->window);
>>         gdk_directfb_event_windows_remove (window);
>>
>>         impl->window->Release(impl->window);
>>         impl->window = NULL;
>>   }
>> }
>>
>> What do you think?
>>
>> Best regards
>>
>> Simon
>>
>> _______________________________________________
>> directfb-dev mailing list
>> [email protected]
>> http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-dev
>>
> 


_______________________________________________
directfb-dev mailing list
[email protected]
http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-dev

Reply via email to