mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-06-03 20:18:17 +02:00
Qt: fixed HUGE mem leak in TQtDeviceContext code where allocated QRegion never has been destroyed, so leak was invisible for heaptrc , but leaked directly qt lib and heap raised dramatically with paint operations.
git-svn-id: trunk@31159 -
This commit is contained in:
parent
68d8948e3c
commit
63c8a49109
@ -1290,7 +1290,9 @@ begin
|
||||
{$endif}
|
||||
|
||||
if CreateHandle then
|
||||
Widget := QFont_create;
|
||||
Widget := QFont_create
|
||||
else
|
||||
Widget := nil;
|
||||
|
||||
FShared := False;
|
||||
FMetrics := nil;
|
||||
@ -1552,7 +1554,9 @@ begin
|
||||
{$endif}
|
||||
|
||||
if CreateHandle then
|
||||
Widget := QBrush_create;
|
||||
Widget := QBrush_create
|
||||
else
|
||||
Widget := nil;
|
||||
|
||||
FShared := False;
|
||||
FSelected := False;
|
||||
@ -1629,7 +1633,9 @@ begin
|
||||
{$endif}
|
||||
|
||||
if CreateHandle then
|
||||
Widget := QPen_create;
|
||||
Widget := QPen_create
|
||||
else
|
||||
Widget := nil;
|
||||
FShared := False;
|
||||
FIsExtPen := False;
|
||||
end;
|
||||
@ -1770,7 +1776,10 @@ begin
|
||||
{$endif}
|
||||
FPolygon := nil;
|
||||
// Creates the widget
|
||||
if CreateHandle then Widget := QRegion_create();
|
||||
if CreateHandle then
|
||||
Widget := QRegion_create()
|
||||
else
|
||||
Widget := nil;
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
@ -1991,15 +2000,21 @@ begin
|
||||
dispose(vClipRect);
|
||||
|
||||
if FMetrics <> nil then
|
||||
FMetrics.Free;
|
||||
FreeThenNil(FMetrics);
|
||||
|
||||
DestroyObjects;
|
||||
|
||||
if (Widget <> nil) and FOwnPainter then
|
||||
begin
|
||||
QPainter_destroy(Widget);
|
||||
Widget := nil;
|
||||
end;
|
||||
|
||||
if ParentPixmap <> nil then
|
||||
begin
|
||||
QPixmap_destroy(ParentPixmap);
|
||||
ParentPixmap := nil;
|
||||
end;
|
||||
|
||||
inherited Destroy;
|
||||
end;
|
||||
@ -2039,7 +2054,11 @@ begin
|
||||
FreeAndNil(vBrush);
|
||||
vPen.Widget := nil;
|
||||
FreeAndNil(vPen);
|
||||
vRegion.Widget := nil;
|
||||
if vRegion.Widget <> nil then
|
||||
begin
|
||||
QRegion_destroy(vRegion.Widget);
|
||||
vRegion.Widget := nil;
|
||||
end;
|
||||
FreeAndNil(vRegion);
|
||||
vBackgroundBrush.Widget := nil;
|
||||
FreeAndNil(vBackgroundBrush);
|
||||
|
Loading…
Reference in New Issue
Block a user