From: espen Date: Tue, 7 Feb 2006 13:22:14 +0000 (+0000) Subject: Added macro WITH-CARIO-CONTEXT to create temporary cario contexts X-Git-Tag: clg-0-92~76 X-Git-Url: https://git.distorted.org.uk/~mdw/clg/commitdiff_plain/10ec8e36764bc9a579a73f288196ac527f18dd5b Added macro WITH-CARIO-CONTEXT to create temporary cario contexts --- diff --git a/gdk/gdk.lisp b/gdk/gdk.lisp index d3dae2e..30c48b9 100644 --- a/gdk/gdk.lisp +++ b/gdk/gdk.lisp @@ -20,7 +20,7 @@ ;; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE ;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -;; $Id: gdk.lisp,v 1.18 2005/11/10 09:01:36 espen Exp $ +;; $Id: gdk.lisp,v 1.19 2006/02/07 13:22:14 espen Exp $ (in-package "GDK") @@ -712,6 +712,13 @@ (defbinding cairo-create () cairo:context (drawable drawable)) + (defmacro with-cairo-context ((cr drawable) &body body) + `(let ((,cr (cairo-create ,drawable))) + (unwind-protect + (progn ,@body) + (unreference-foreign 'cairo:context (foreign-location ,cr)) + (invalidate-instance ,cr)))) + (defbinding cairo-set-source-color () nil (cr cairo:context) (color color))