From: <ri...@us...> - 2009-10-29 23:01:58
|
Revision: 2707 http://navit.svn.sourceforge.net/navit/?rev=2707&view=rev Author: rikky Date: 2009-10-29 23:01:50 +0000 (Thu, 29 Oct 2009) Log Message: ----------- Fix:graphics/win32:Fixed memory leak introduced in previous revision Modified Paths: -------------- trunk/navit/navit/graphics/win32/graphics_win32.c Modified: trunk/navit/navit/graphics/win32/graphics_win32.c =================================================================== --- trunk/navit/navit/graphics/win32/graphics_win32.c 2009-10-29 13:00:21 UTC (rev 2706) +++ trunk/navit/navit/graphics/win32/graphics_win32.c 2009-10-29 23:01:50 UTC (rev 2707) @@ -756,7 +756,7 @@ { int i; - SelectObject( gr->hMemDC, gc->hpen ); + HPEN hpenold = SelectObject( gr->hMemDC, gc->hpen ); int first = 1; for ( i = 0; i< count; i++ ) @@ -771,12 +771,12 @@ LineTo( gr->hMemDC, p[i].x, p[i].y ); } } -} + SelectObject( gr->hMemDC, hpenold);} static void draw_polygon(struct graphics_priv *gr, struct graphics_gc_priv *gc, struct point *p, int count) { - SelectObject( gr->hMemDC, gc->hpen ); - SelectObject( gr->hMemDC, gc->hbrush ); + HPEN holdpen = SelectObject( gr->hMemDC, gc->hpen ); + HBRUSH holdbrush = SelectObject( gr->hMemDC, gc->hbrush ); if (sizeof(POINT) != sizeof(struct point)) { int i; POINT points[ count ]; @@ -788,28 +788,28 @@ Polygon( gr->hMemDC, points,count ); } else Polygon( gr->hMemDC, (POINT *)p, count); -} + SelectObject( gr->hMemDC, holdbrush); SelectObject( gr->hMemDC, holdpen);} static void draw_rectangle(struct graphics_priv *gr, struct graphics_gc_priv *gc, struct point *p, int w, int h) { - SelectObject( gr->hMemDC, gc->hpen ); - SelectObject( gr->hMemDC, gc->hbrush ); + HPEN holdpen = SelectObject( gr->hMemDC, gc->hpen ); + HBRUSH holdbrush = SelectObject( gr->hMemDC, gc->hbrush ); Rectangle(gr->hMemDC, p->x, p->y, p->x+w, p->y+h); -} + SelectObject( gr->hMemDC, holdbrush); SelectObject( gr->hMemDC, holdpen);} static void draw_circle(struct graphics_priv *gr, struct graphics_gc_priv *gc, struct point *p, int r) { r=r/2; - SelectObject( gr->hMemDC, gc->hpen ); - SelectObject( gr->hMemDC, gc->hbrush ); + HPEN holdpen = SelectObject( gr->hMemDC, gc->hpen ); + HBRUSH holdbrush = SelectObject( gr->hMemDC, gc->hbrush ); Ellipse( gr->hMemDC, p->x - r, p->y -r, p->x + r, p->y + r ); -} + SelectObject( gr->hMemDC, holdbrush); SelectObject( gr->hMemDC, holdpen);} @@ -971,13 +971,8 @@ &utf16p, utf16p+sizeof(utf16), lenientConversion) == conversionOK) { -#ifdef _WIN32_WCE - ExtTextOut (gr->hMemDC, 0, 0, 0, NULL, - utf16, (wchar_t*) utf16p - utf16, NULL); -#else ExtTextOutW(gr->hMemDC, 0, 0, 0, NULL, utf16, (wchar_t*) utf16p - utf16, NULL); -#endif } } @@ -1359,7 +1354,6 @@ { gr->width = w; gr->height = h; -// TODO (Rikky#1#): should be deleted first create_memory_dc(gr); } gr->p.x = p->x; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |