summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVincent Torri <vincent.torri@gmail.com>2015-07-23 09:52:31 +0200
committerTom Hacohen <tom@stosb.com>2015-07-23 14:05:33 +0100
commit07af170bd834ed8194fd0279f27b3b9c0cc7b950 (patch)
tree5c46374a385a0edc8d10814ea399556cd49cd819
parentff6dbb17e32f6fc19253282a7bdfbeb797d952b0 (diff)
downloadefl-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.c23
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 *