summaryrefslogtreecommitdiff
path: root/amiga
diff options
context:
space:
mode:
Diffstat (limited to 'amiga')
-rwxr-xr-xamiga/gui.h1
-rwxr-xr-xamiga/plotters.c23
2 files changed, 16 insertions, 8 deletions
diff --git a/amiga/gui.h b/amiga/gui.h
index 723b6950f..4a7f2b521 100755
--- a/amiga/gui.h
+++ b/amiga/gui.h
@@ -124,6 +124,7 @@ struct gui_globals
struct Layer_Info *layerinfo;
APTR areabuf;
APTR tmprasbuf;
+ struct Rectangle rect;
#ifdef NS_AMIGA_CAIRO
cairo_surface_t *surface;
cairo_t *cr;
diff --git a/amiga/plotters.c b/amiga/plotters.c
index b3d1baa43..c990ddd9f 100755
--- a/amiga/plotters.c
+++ b/amiga/plotters.c
@@ -244,21 +244,28 @@ bool ami_fill(int x0, int y0, int x1, int y1, colour c)
bool ami_clip(int x0, int y0, int x1, int y1)
{
struct Region *reg = NULL;
- struct Rectangle rect;
if(currp->Layer)
{
- reg = NewRegion();
+ reg = InstallClipRegion(currp->Layer,NULL);
- rect.MinX = x0;
- rect.MinY = y0;
- rect.MaxX = x1-1;
- rect.MaxY = y1-1;
+ if(!reg)
+ {
+ reg = NewRegion();
+ }
+ else
+ {
+ ClearRectRegion(reg,&glob.rect);
+ }
- OrRectRegion(reg,&rect);
+ glob.rect.MinX = x0;
+ glob.rect.MinY = y0;
+ glob.rect.MaxX = x1-1;
+ glob.rect.MaxY = y1-1;
- reg = InstallClipRegion(currp->Layer,reg);
+ OrRectRegion(reg,&glob.rect);
+ reg = InstallClipRegion(currp->Layer,reg);
if(reg) DisposeRegion(reg);
}