[Webkit-unassigned] [Bug 144521] [X11] Add XUniquePtr and XUniqueResource to automatically free X resources

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Thu May 7 01:26:25 PDT 2015


https://bugs.webkit.org/show_bug.cgi?id=144521

--- Comment #9 from Zan Dobersek <zan at falconsigh.net> ---
Comment on attachment 252487
  --> https://bugs.webkit.org/attachment.cgi?id=252487
Try to fix EFL build

View in context: https://bugs.webkit.org/attachment.cgi?id=252487&action=review

> Source/WebCore/PlatformEfl.cmake:200
> +    platform/graphics/x11/XUnique.cpp

Consider splitting XUnique.h into XUniquePtr.h and XUniqueResource.h, and renaming XUnique.cpp to XUniqueResource.cpp.

> Source/WebCore/platform/graphics/x11/XUnique.h:124
> +    long unsigned release() { long unsigned resource = m_resource; m_resource = 0; return resource; }

Use std::exchange() here. (It's C++14, but there's an implementation in StdLibExtras.h.)

> Source/WebCore/platform/graphics/x11/XUnique.h:126
> +    void reset(long unsigned resource = 0)

Instead of `resource.reset()`, I'd prefer resource = nullptr;
If you consider it, it possible to implement by overloading the assignment operator:

    XUniqueResource& operator=(std::nullptr_t) { ... }

> Source/WebCore/platform/graphics/x11/XUnique.h:164
> +typedef XUniqueResource<XResource::Colormap> XUniqueColormap;
> +#if PLATFORM(GTK)
> +typedef XUniqueResource<XResource::Damage> XUniqueDamage;
> +#endif
> +typedef XUniqueResource<XResource::Pixmap> XUniquePixmap;
> +typedef XUniqueResource<XResource::Window> XUniqueWindow;
> +#if USE(GLX)
> +typedef XUniqueResource<XResource::GLXPbuffer> XUniqueGLXPbuffer;
> +typedef XUniqueResource<XResource::GLXPixmap> XUniqueGLXPixmap;
> +#endif
> +
> +// Give a name also to these XUniquePtr to avoid having to use the internal struct names (_XGC, __GLXcontextRec, ...).
> +typedef XUniquePtr<_XGC> XUniqueGC;
> +#if USE(GLX)
> +typedef XUniquePtr<__GLXcontextRec> XUniqueGLXContext;
> +#endif

Use type aliases:
using XUniqueWhatever = XUniqueHandler<Whatever>;

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.webkit.org/pipermail/webkit-unassigned/attachments/20150507/a4923f16/attachment.html>


More information about the webkit-unassigned mailing list