|
From: <hba...@us...> - 2010-05-30 16:02:37
|
Revision: 11036
http://plplot.svn.sourceforge.net/plplot/?rev=11036&view=rev
Author: hbabcock
Date: 2010-05-30 16:02:31 +0000 (Sun, 30 May 2010)
Log Message:
-----------
Add a closed flag to the stream for the cairo driver. If the stream is closed then we don't do any plotting.
Modified Paths:
--------------
trunk/drivers/cairo.c
Modified: trunk/drivers/cairo.c
===================================================================
--- trunk/drivers/cairo.c 2010-05-30 15:49:54 UTC (rev 11035)
+++ trunk/drivers/cairo.c 2010-05-30 16:02:31 UTC (rev 11036)
@@ -107,6 +107,7 @@
char *pangoMarkupString;
short upDown;
float fontSize;
+ short closed;
/* Keep track of the bounding box of the modified portion of the surface */
double dirty_x1;
double dirty_y1;
@@ -119,7 +120,6 @@
Display *XDisplay;
Window XWindow;
unsigned int xdrawable_mode;
- short window_closed;
#endif
#if defined ( PLD_memcairo )
unsigned char *memory;
@@ -285,6 +285,9 @@
aStream = (PLCairo *) pls->dev;
+ if ( aStream->closed )
+ return;
+
/* Do not use the external surface if the user says not to */
if ( !aStream->rasterize_image )
return;
@@ -329,6 +332,9 @@
aStream = (PLCairo *) pls->dev;
+ if ( aStream->closed )
+ return;
+
/* TODO FIXME: This should really only copy the used portion of the
* offscreen pixmap. */
@@ -370,6 +376,9 @@
aStream = (PLCairo *) pls->dev;
+ if ( aStream->closed )
+ return;
+
/* Some Cairo devices support delayed device setup (eg: xcairo with
* external drawable and extcairo with an external context). */
if ( aStream->cairoContext == NULL )
@@ -448,6 +457,9 @@
aStream = (PLCairo *) pls->dev;
+ if ( aStream->closed )
+ return;
+
set_current_context( pls );
get_line_properties( aStream, &old_join, &old_cap );
@@ -477,6 +489,9 @@
aStream = (PLCairo *) pls->dev;
+ if ( aStream->closed )
+ return;
+
get_line_properties( aStream, &old_join, &old_cap );
set_line_properties( aStream, CAIRO_LINE_JOIN_BEVEL, CAIRO_LINE_CAP_BUTT );
@@ -498,6 +513,10 @@
PLCairo *aStream;
aStream = (PLCairo *) pls->dev;
+
+ if ( aStream->closed )
+ return;
+
cairo_show_page( aStream->cairoContext );
}
@@ -546,6 +565,9 @@
aStream = (PLCairo *) pls->dev;
+ if ( aStream->closed )
+ return;
+
switch ( op )
{
case PLESC_FILL: /* filled polygon */
@@ -1230,6 +1252,9 @@
aStream->rasterize_image = rasterize_image;
aStream->set_background = set_background;
+ /* set stream as not closed. */
+ aStream->closed = 0;
+
return aStream;
}
@@ -1643,9 +1668,6 @@
XFlush( aStream->XDisplay );
- /* set window as not closed. */
- aStream->window_closed = 0;
-
return 0;
}
@@ -1738,7 +1760,7 @@
plD_bop_cairo( pls );
- if ( aStream->window_closed )
+ if ( aStream->closed )
return;
if ( aStream->xdrawable_mode )
@@ -1768,7 +1790,7 @@
aStream = (PLCairo *) pls->dev;
- if ( aStream->window_closed )
+ if ( aStream->closed )
return;
/* Blit the offscreen image to the X window. */
@@ -1804,7 +1826,7 @@
break;
case ClientMessage:
// plexit("X Window closed");
- aStream->window_closed = 1;
+ aStream->closed = 1;
aStream->exit_event_loop = 1;
break;
case Expose:
@@ -1863,6 +1885,9 @@
aStream = (PLCairo *) pls->dev;
+ if ( aStream->closed )
+ return;
+
switch ( op )
{
case PLESC_FLUSH: /* forced update of the window */
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|