diff options
author | Vincent Torri <vincent.torri@gmail.com> | 2015-07-23 09:52:31 +0200 |
---|---|---|
committer | Tom Hacohen <tom@stosb.com> | 2015-07-23 14:05:33 +0100 |
commit | 07af170bd834ed8194fd0279f27b3b9c0cc7b950 (patch) | |
tree | 5c46374a385a0edc8d10814ea399556cd49cd819 | |
parent | ff6dbb17e32f6fc19253282a7bdfbeb797d952b0 (diff) | |
download | efl-07af170bd834ed8194fd0279f27b3b9c0cc7b950.tar.gz |
Evas GDI engine: save the original bitmap into the memory DC
This allows the memory DC to be killed and fix a memory leak
@fix
-rw-r--r-- | src/modules/evas/engines/software_gdi/evas_gdi_buffer.c | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/src/modules/evas/engines/software_gdi/evas_gdi_buffer.c b/src/modules/evas/engines/software_gdi/evas_gdi_buffer.c index fe69d736a0..ab233ddec8 100644 --- a/src/modules/evas/engines/software_gdi/evas_gdi_buffer.c +++ b/src/modules/evas/engines/software_gdi/evas_gdi_buffer.c @@ -59,18 +59,21 @@ evas_software_gdi_output_buffer_paste(Gdi_Output_Buffer *gdiob, int y) { HDC dc; + HGDIOBJ obj; dc = CreateCompatibleDC(gdiob->dc); - if (!dc) - return; - SelectObject(dc, gdiob->bitmap); - BitBlt(gdiob->dc, - x, y, - gdiob->width, gdiob->height, - dc, - 0, 0, - SRCCOPY); - DeleteDC(dc); + if (dc) + { + obj = SelectObject(dc, gdiob->bitmap); + BitBlt(gdiob->dc, + x, y, + gdiob->width, gdiob->height, + dc, + 0, 0, + SRCCOPY); + SelectObject(dc, obj); + DeleteDC(dc); + } } DATA8 * |