summaryrefslogtreecommitdiff
path: root/src/corelib/x11
diff options
context:
space:
mode:
authorDibo <dibo20@wp.pl>2013-05-02 15:05:19 +0100
committerGraeme Geldenhuys <graemeg@gmail.com>2013-05-02 15:05:19 +0100
commit9d4edcb7cbed49d90923784ff64898e36858397b (patch)
treeeedaf631aed69539d1802a91f3cd11e46c8c549a /src/corelib/x11
parentf2be5b248a4428f03afeb80392e12326e857715a (diff)
downloadfpGUI-9d4edcb7cbed49d90923784ff64898e36858397b.tar.xz
Much faster CopyRect() implementation for X11
Diffstat (limited to 'src/corelib/x11')
-rw-r--r--src/corelib/x11/fpg_x11.pas11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/corelib/x11/fpg_x11.pas b/src/corelib/x11/fpg_x11.pas
index 5b62ef5c..203dc870 100644
--- a/src/corelib/x11/fpg_x11.pas
+++ b/src/corelib/x11/fpg_x11.pas
@@ -215,6 +215,7 @@ type
public
constructor Create(awin: TfpgWindowBase); override;
destructor Destroy; override;
+ procedure CopyRect(ADest_x, ADest_y: TfpgCoord; ASrcCanvas: TfpgCanvasBase; var ASrcRect: TfpgRect); override;
end;
@@ -2825,6 +2826,13 @@ begin
inherited Destroy;
end;
+procedure TfpgX11Canvas.CopyRect(ADest_x, ADest_y: TfpgCoord; ASrcCanvas: TfpgCanvasBase;
+ var ASrcRect: TfpgRect);
+begin
+ SortRect(ASrcRect);
+ XCopyArea(xapplication.Display, TfpgX11Canvas(ASrcCanvas).FDrawHandle, FDrawHandle, Fgc, ASrcRect.Left, ASrcRect.Top, ASrcRect.Width, ASrcRect.Height, ADest_x, ADest_y);
+end;
+
procedure TfpgX11Canvas.DoBeginDraw(awin: TfpgWindowBase; buffered: boolean);
var
x: integer;
@@ -2996,7 +3004,8 @@ begin
Trunc(64 * a1), Trunc(64 * a2));
end;
-procedure TfpgX11Canvas.DoDrawPolygon(Points: fpg_base.PPoint; NumPts: Integer; Winding: boolean);
+procedure TfpgX11Canvas.DoDrawPolygon(Points: PPoint; NumPts: Integer;
+ Winding: boolean);
var
PointArray: PXPoint;
i: integer;