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. |