Re: [PATCH} fixing memory leak with cairo_win32_device (Bug 67171)

Fred Beca <[email protected]>
Newsgroups gmane.comp.lib.cairo
Message-ID <CAKTSDKarePdSjgqOHOFM9TpA_7+tsvEi42g=RD3MBnFGqp_7dA@mail.gmail.com>
Thank you. The patch has been attached to the bug.

On Wed, Apr 6, 2016 at 12:51 AM, Adrian Johnson <[email protected]>
wrote:

> On 05/04/16 19:52, Fred Beca wrote:
> > Hi,
> >
> > There have been a memory leak on win32 platform for a while because of
> > the static __cairo_win32_device object that is never released
> > (see https://bugs.freedesktop.org/show_bug.cgi?id=67171)
> >
> > Please find attached a simple patch that fixes the problem by adding a
> > win32-specific cleanup call in the cairo_debug_reset_static_data
> > function. I hope it can be added to the official release to remove the
> leak.
>
> If you could add the patch to bug 67171 and I will test and commit it
> next time I am working on the windows backend.
>
> >
> > Regards,
> >
> > Fred
> >
> > Index: cairo-debug.c
> > ===================================================================
> > --- cairo-debug.c(cairo-1.14.6)
> > +++ cairo-debug.c(working copy)
> > @@ -89,7 +89,9 @@
> >  #if CAIRO_HAS_DRM_SURFACE
> >      _cairo_drm_device_reset_static_data ();
> >  #endif
> > -
> > +#if CAIRO_HAS_WIN32_SURFACE
> > +    _cairo_win32_device_reset_static_data ();
> > +#endif
> >      _cairo_default_context_reset_static_data ();
> >
> >  #if CAIRO_HAS_COGL_SURFACE
> > Index: cairoint.h
> > ===================================================================
> > --- cairoint.h(cairo-1.14.6)
> > +++ cairoint.h(working copy)
> > @@ -442,6 +442,11 @@
> >  cairo_private void
> >  _cairo_win32_font_reset_static_data (void);
> >
> > +#if CAIRO_HAS_WIN32_SURFACE
> > +cairo_private void
> > +_cairo_win32_device_reset_static_data (void);
> > +#endif
> > +
> >  #if CAIRO_HAS_COGL_SURFACE
> >  void
> >  _cairo_cogl_context_reset_static_data (void);
> > Index: win32/cairo-win32-device.c
> > ===================================================================
> > --- win32/cairo-win32-device.c(cairo-1.14.6)
> > +++ win32/cairo-win32-device.c(working copy)
> > @@ -187,3 +187,12 @@
> >
> >      return flags;
> >  }
> > +
> > +void _cairo_win32_device_reset_static_data (void)
> > +{
> > +     if (__cairo_win32_device != NULL) {
> > +cairo_device_t *device = __cairo_win32_device;
> > +__cairo_win32_device = NULL;
> > +cairo_device_destroy (device);
> > +    }
> > +}
> >
> >
> >
>
>

-- 
cairo mailing list
[email protected]
https://lists.cairographics.org/mailman/listinfo/cairo
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.