From: Robin Dunn Date: Wed, 3 Mar 2004 02:02:28 +0000 (+0000) Subject: Added a typemap that converts the references returned for some GDI X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/d19a83a5ac67c97c208e28289bbf4adaee6b4134 Added a typemap that converts the references returned for some GDI objects (Brush, Pen, Font, etc.) into copies, (taking advantage of the copy-on-write capabilities of the C++ class.) This is to work around an issue where getting a GDI object changing it and setting it back to the DC would trigger an incorrect optimization. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@26044 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/wxPython/src/my_typemaps.i b/wxPython/src/my_typemaps.i index 968ff7a26b..754704242b 100644 --- a/wxPython/src/my_typemaps.i +++ b/wxPython/src/my_typemaps.i @@ -271,6 +271,22 @@ %typemap(out) bool "$result = $1 ? Py_True : Py_False; Py_INCREF($result);" + +//--------------------------------------------------------------------------- +// Typemap for when GDI objects are returned by reference. This will cause a +// copy to be made instead of returning a reference to the same instance. The +// GDI object's internal refcounting scheme will do a copy-on-write of the +// internal data as needed. + +// These too? +//, wxRegion&, wxPalette& + +%typemap(out) wxBrush&, wxPen&, wxFont&, wxBitmap&, wxIcon&, wxCursor& { + $*1_ltype* resultptr = new $*1_ltype(*$1); + $result = SWIG_NewPointerObj((void*)(resultptr), $1_descriptor, 1); +} + + //--------------------------------------------------------------------------- // Typemaps to convert return values that are base class pointers // to the real derived type, if possible. See wxPyMake_wxObject in