Commit graph

39 commits

Author SHA1 Message Date
Andrés G. Aragoneses
8aaed84e5e cairo: Fix remaining leaks when finalizer gets called
Apply same finalizer leak fix to the rest of IDisposable-ownership
cairo classes as the one recently committed for Cairo.Context[1].

[1] https://github.com/mono/gtk-sharp/commit/41eeecbf9a6d8
2013-11-30 15:34:29 +01:00
Andrés G. Aragoneses
70d1827058 cairo: Throw ObjectDisposedException after an object has been disposed
Potentially all these IDisposable classes could be used after being
disposed, which would result in native crashes. We now do an explicit
check and throw an exception in managed land when the object has been
disposed.

This is particularly useful because:
 a/ the native crashes are quite obscure, there no indication that
you're using a disposed object
 b/ Gtk# is passing Context instances to user methods, and disposes them
when the method returns. So if the user code keeps a reference to the
Context, there a good chance it will try to use it after it's disposed.

Other changes in this patch include:
 * Renaming a parameter to be more consistent with the other subsequent
ctor called.
 * Replacing implementation of some [Obsolete()] methods with the call
to the methods they were replaced with, to avoid redundancy and the
need for more CheckDisposed() calls than necessary.
 * Throw ArgumentException when receiving an IntPtr.Zero as a handle,
as a way to protect ourselves from wrapping invalid native pointers,
and throwing ObjectDisposedExceptions because the object was invalid in
the first place.

Signed-off-by: Bertrand Lorentz <bertrand.lorentz@gmail.com>
2013-11-24 15:56:26 +01:00
Andrés G. Aragoneses
41eeecbf9a cairo: fix leak when Context object is finalized
When the finalizer calls Dispose(), disposing is false, it means that
CairoDebug traces should be printed, but the reference count on the
native context should still be decreased. Otherwise a real leak
would appear, as the native context would never be freed when the
managed object is GCed.
2013-11-03 15:21:49 +01:00
Andrés G. Aragoneses
9016c304de MSBuild: change some projects to Library type, not Executable
Even though gtk-sharp cannot be built via MSBuild (yet?), it's better
to make the .csproj reflect more closely what you get with the normal
build.
2013-09-24 01:24:33 +02:00
Mike Krüger
6e0efb08f2 cairo: Added SetSourceColor method to Cairo.Context.
Cherry-picked from the gtk-sharp-2.12 branch.
2013-08-18 18:38:54 +02:00
Bertrand Lorentz
01520a9859 cairo: Don't disable the deprecation warnings during compilation
This makes the "#pragma warning disable 612" in Pattern.cs that were
removed previously actually useful, so we add it back.
2013-07-26 18:46:43 -05:00
Bertrand Lorentz
07dc9f6176 cairo: Remove superfluous #pragma in Pattern.cs 2013-07-26 17:43:27 -05:00
Wolfgang Steffens
796cd1e8a1 cairo: Fix text API calls
The native functions require a NULL-terminated string of text encoded in
UTF-8.

This change is merged from Mono.Cairo in mono 3.2.
2013-07-26 17:43:27 -05:00
Bertrand Lorentz
21ce761271 cairo: Fix some whitespace and code formatting issues 2013-07-26 17:43:26 -05:00
Michael Hutchinson
c77fa9d048 cairo: Don't log warnings during VM shutdown
Else it can explode pretty badly if the Console streams are
finalized before the Cairo objects.
2013-07-26 17:43:26 -05:00
Michael Hutchinson
0fd72adae0 cairo: Destroy should suppress finalizer 2013-07-26 17:43:26 -05:00
Bertrand Lorentz
36e2a12bfc cairo: Use getter methods for returning IDisposables
This makes it a bit clearer that the caller is responsible for
disposing IDisposable objects returned from any method.
2013-07-26 17:43:26 -05:00
Michael Hutchinson
bdc2cfdf1d cairo: Clean up Region's Dispose/ctor 2013-07-26 17:43:26 -05:00
Michael Hutchinson
50ee23f0f2 cairo: Make debug more robust 2013-07-26 17:43:26 -05:00
Michael Hutchinson
6e7527cb92 cairo: Put some classes in separate files 2013-07-26 17:43:26 -05:00
Michael Hutchinson
38d1a3f13e cairo: Introduce the concept of reference ownership
Also:
  * improving naming consistency
  * obsolete old/broken stuff
  * clean up tabs/space mix

NOTE: this removes the wrapper caches for Pattern and Surface as
there was no reliable way to clear them.

This is a merge from changes in Mono.Cairo in mono 3.2.
2013-07-26 17:43:11 -05:00
Michael Hutchinson
5a78a5d177 cairo: Add mechanism to debug missing Dispose calls
Enabled by setting a new MONO_CAIRO_DEBUG_DISPOSE environment variable.
2013-07-26 10:34:45 -05:00
Michael Hutchinson
116d9fcc95 cairo: Clean up dispose implementations 2013-07-26 10:10:01 -05:00
Cameron White
57c82a89c7 cairo: Fix rectangles returned by StrokeExtents and FillExtents methods
The third and fourth parameters of the Rectangle constructor are width
and height, but cairo_stroke_extents and cairo_fill_extents give right
and bottom coordinates.

Signed-off-by: Bertrand Lorentz <bertrand.lorentz@gmail.com>
2012-12-27 15:26:42 +01:00
Bertrand Lorentz
60612071c1 Add a MonoDevelop solution and projects for browsing the codebase
This is just to be able to use MonoDevelop to browse the codebase, both
custom and generated code. It is NOT intended to be used to build
anything.
2012-10-13 16:44:10 +02:00
Cameron White
3d0117c9db Fix finalization warning message for Cairo.Path. 2012-08-04 23:32:37 -04:00
Bertrand Lorentz
477710bd1e build: Fix API version for cairo and don't hardcode it
Cairo has a different API version that was hardcoded. Define it in a new
variable in configure.ac and use it in AssemblyInfo and Makefile.am.

This fixes make distcheck, as the cairo-sharp.dll assembly was not
getting uninstalled from the GAC.
2012-07-02 13:56:06 -04:00
Bertrand Lorentz
18d1af6907 build: Specify assembly version when uninstalling from the GAC
We need to qualify the assembly name with the version, otherwise gacutil
uninstall all versions of the assembly.
Fixes http://bugzilla.xamarin.com/show_bug.cgi?id=207
2011-08-11 18:44:58 +02:00
Bertrand Lorentz
18d96029d2 build: Include cairo-api.xml in the tarball 2011-07-03 16:44:15 +02:00
Mike Kestner
0fc5126228 Implement Ownable Generatable type.
* cairo/Context.cs: add ctor (IntPtr, bool owned)
* cairo/cairo-api.xml: expose cairo_t as new ownable symbol type
* generator/HandleBase.cs: implement IOwnable
* generator/IOwnable.cs: new interface for wrapping ownable types
* generator/Makefile.am: add new files to build
* generator/OwnableGen.cs: SimpleBase subclass to expose IOwnable
* generator/Parameters.cs: use IOwnable.FromNative instead of HandleBase
* generator/Parser.cs: parse ownable symbol type
* generator/ReturnValue.cs: use IOwnable.FromNative instead of HandleBase
2011-04-21 18:04:47 -05:00
Mike Kestner
6647c2609c Revert a couple files to mono master
* cairo/Cairo.cs: make a static class like master
* cairo/ImageSurface.cs: revert obsolete warning and ws changes
2011-04-21 18:01:33 -05:00
Mike Kestner
e7ee99526a Add Pattern symbol to cairo-api.xml
* cairo/Context.cs: use Pattern.Handle
* cairo/Pattern.cs: expose Lookup method, Obsolete the Pointer prop and
  add a new Handle prop for API consistency.
* cairo/cairo-api.xml: add Pattern symbol.
2011-02-18 21:57:39 -06:00
Mike Kestner
ee866216b1 Cairo API 1.10 updates.
* cairo/*: merge changes to Mono.Cairo since we split back in Oct 2008.
  Not much changed.  Scrubbed the doc index and updated NativeMethods
  to match.  Commented with DONTCARE the ones we will ignore.  Implemented
  a few of them, including an initial Device binding.  Still some work
  to do, and some discovery to be done to see what happened to Xcb, Glitz,
  and DirectFB surfaces and whether we need to remove those classes.
2011-02-17 23:00:12 -06:00
Mike Kestner
27b71b1982 Get Scribble sample working.
* cairo/cairo-api.xml: add the Content enum type and fix surface symbol.
* gdk/gdk-sharp.dll.config.in: s/3.0/3/ on the so name.
* sample/Makefile.am: enable scribble.exe build
* sample/Scribble.cs: rewrite for new API, specifically replace pixmap
drawing usage with cairo, and use OnDrawn in place of OnExposeEvent.
Also Made it a subclass of DrawingArea instead of handling events.
2011-02-15 10:19:07 -06:00
Mike Kestner
955cdcf123 Update Gdk to the 2.99 API
* cairo/Surface.cs: expose LookupSurface
* cairo/cairo-api.xml: add surface mapping
* gdk/*: updates and hobbling to get gdk building.  lots of work
to come.
2011-01-30 22:49:15 -06:00
Mike Kestner
f6d11d67b6 Cairo# 1.10.0 assembly.
* configure.ac: drop cairo conditionality
* cairo/AssemblyInfo.cs: set version to 1.10.0.0
* cairo/Makefile.am: unconditional build and add Region.cs
* cairo/cairo-api.xml: initial type exposure.
* pango/Makefile.am: use cairo-sharp.dll and cairo-api.xml
* pango/Pango.metadata: drop explicit symbol additions.
* gdk/Gdk.metadata: drop explicit symbol additions.
* gdk/Makefile.am: use cairo-sharp.dll and cairo-api.xml
* gtk/Makefile.am: use cairo-sharp.dll and cairo-api.xml
* sample/Makefile.am: use cairo-sharp.dll
* sample/GtkDemo/Makefile.am: use cairo-sharp.dll

This is an initial stab at a 1.10 binding.  It will probably take
more based on the number of errors still coming out of the Gdk
build.
2011-01-30 17:00:03 -06:00
Mike Kestner
ec77219ad5 Use -keyfile instead of deprecated attr.
* AssemblyInfo.cs.in: kill keyfile attr
* Makefile.am: moved mono.snk to cairo dir
* Makefile.include: no need to copy snk into builddir any longer.
* cairo/AssemblyInfo.cs: kill keyfile attr
* cairo/Makefile.am: snk relocated into here. use it directly.
* glib/Makefile.am: no need to copy snk into builddir any longer.
* gtkdotnet/Makefile.am: no need to copy snk into builddir any longer.
2011-01-07 22:15:04 -06:00
Mike Kestner
a948792be0 2009-11-30 Mike Kestner <mkestner@novell.com>
* */Makefile.am: standardize on - options over / options for 
	consistency.  Also assists with build on msys. [Fixes #550667]

svn path=/trunk/gtk-sharp/; revision=147125
2009-11-30 20:40:34 +00:00
Christian Hoff
940cf88750 2009-07-02 Christian Hoff <christian_hoff@gmx.net>
* configure.in.in: Target .net 2.0 profile
	* gapi-cdecl-insert: Kill. We are now using the UnmanagedFunctionPointerAttribute
	for callbacks.
	* glib/CdeclCallback: Mark obsolete.
	* generator/*.cs:
	* *.custom: Use [UnmanagedFunctionPointer (CallingConvention.Cdecl)] instead of
	[GLib.CDeclCallback].

svn path=/trunk/gtk-sharp/; revision=137323
2009-07-02 20:18:10 +00:00
Mike Kestner
2110dad6d1 2009-01-08 Mike Kestner <mkestner@novell.com>
* cairo/Makefile.am: use mono.snk to sign the Mono.Cairo assembly
	so that it's compatible with mono built versions.  Initial patch
	from Christian Hoff with a few tweaks.

svn path=/trunk/gtk-sharp/; revision=122821
2009-01-08 20:05:24 +00:00
Mike Kestner
346d4d685c 2008-11-26 Mike Kestner <mkestner@novell.com>
* bootstrap-2.12: bump svn version.
	* cairo/Makefile.am: policy config is hard-coded, not generated.

svn path=/trunk/gtk-sharp/; revision=120087
2008-11-26 18:02:08 +00:00
Mike Kestner
c07a5f5580 2008-10-21 Mike Kestner <mkestner@novell.com>
* cairo/*: add a policy assembly for 1.0 defering to 2.0.

svn path=/trunk/gtk-sharp/; revision=116692
2008-10-21 22:50:21 +00:00
Mike Kestner
b20d37c79c 2008-10-09 Mike Kestner <mkestner@novell.com>
* cairo/*.cs: flatten source hierarchy to simplify win32 build.
	* sample/Makefile.am: fix a ref issue with local cairo.

svn path=/trunk/gtk-sharp/; revision=115401
2008-10-09 23:53:18 +00:00
Mike Kestner
81e6815080 2008-10-09 Mike Kestner <mkestner@novell.com>
* configure.in.in: magic for local Mono.Cairo build.
	* cairo/*: a local build of Mono.Cairo for .Net-only builds on win32.
	* */Makefile.am: use local Mono.Cairo where necessary.

svn path=/trunk/gtk-sharp/; revision=115399
2008-10-09 22:35:02 +00:00