[Libreoffice-bugs] [Bug 107792] Introduce reference counting for GDI handles

bugzilla-daemon at bugs.documentfoundation.org bugzilla-daemon at bugs.documentfoundation.org
Sat Apr 7 23:52:45 UTC 2018


https://bugs.documentfoundation.org/show_bug.cgi?id=107792

--- Comment #2 from Kowther Hassan <kowtherh at gmail.com> ---
(In reply to Markus Mohrhard from comment #0)
> Currently we manually keep track of the lifecycle of GDI resources and
> delete them manually. Instead we should use a reference counted object that
> releases the handle as soon as we don't need it any more.
> 
> Tomasz already introduced such a concept to fix one of our GDI handle leaks
> with
> https://cgit.freedesktop.org/libreoffice/core/commit/
> ?id=dae61482df7ae540a1fb8feefbb92b5e7238444d
> That commit introduces a scoped version and we need additionally a reference
> counted version. These correspond to scoped_ptr and shared_ptr in C++.

Hi I am an undergraduate student new to open source development and Libre
Office and an intermediate knowledge of C++ (I applied for GSoC). I want to
tackle this bug but have a few questions. I have not used shared_ptr,
scoped_ptr or anything to do with reference counting before. 

- The example mentioned introduced the class ScopedHDC that deletes the object
for you.Is this fix just for HDC objects? Or are there other gdi objects? I am
not familiar with gdi. I see other objects such as HBITMAP, HBRUSH, HFONT that
are all manually destroyed using DeleteObject().

- Is this fix asking for an alternative to ScopedHDC class using shared
pointers or scoped pointers?

- For shared_ptr, my understanding is that you could create a shared_ptr object
using:

std::shared_ptr<HDC> hNewDC = std::make_shared<HDC>( CreateCompatibleDC(hDC) );

then use it as you would a regular pointer without having to call
DeleteDC(hNewDC) once your done. Is my understanding correct?

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/libreoffice-bugs/attachments/20180407/53637cfc/attachment.html>


More information about the Libreoffice-bugs mailing list