mirror of
https://github.com/Ryujinx/GtkSharp.git
synced 2025-11-19 18:54:56 +00:00
Some virtual methods are passed a native object that is wrapped in an
IDisposable managed object, which is then passed on to the managed
overrides. We need to dispose those objects as soon as possible,
otherwise their native counterpart will not be freed until the next
garbage collection. Requiring the overrides to dispose them would be
cumbersome and error-prone.
Those parameters will now be disposed in a finally {...} block, after
the virtual method has returned. This means that overrides should not
keep a reference to such a parameter outside of the scope of the method,
as it will be diposed when the method returns.
This change only affects Cairo.Context parameter for now, but it was
particularly needed for them, as they could happily hold on to tens of
MBs of memory until the next garbage collection.
|
||
|---|---|---|
| atk | ||
| audit | ||
| cairo | ||
| doc | ||
| gdk | ||
| generator | ||
| gio | ||
| glib | ||
| gtk | ||
| gtkdotnet | ||
| pango | ||
| parser | ||
| sample | ||
| sources | ||
| .gitignore | ||
| AssemblyInfo.cs.in | ||
| AUTHORS | ||
| autogen.sh | ||
| ChangeLog.old | ||
| configure.ac | ||
| COPYING | ||
| gapi.xsd | ||
| gtk-sharp-2.0-dev.wxs.in | ||
| gtk-sharp-2.0-lib.wxs.in | ||
| gtk-sharp.sln | ||
| gtk-sharp.snk | ||
| HACKING | ||
| Makefile.am | ||
| Makefile.include | ||
| NEWS | ||
| policy.config.in | ||
| README | ||
| README.generator | ||
| TODO | ||
The Gtk# website can be found at: http://www.mono-project.com/GtkSharp
Gtk# is a .NET language binding for the GTK+ toolkit and assorted GNOME
libraries. Gtk# is free software, licensed under the GNU LGPL.
Building & Installing Gtk#:
---------------------------
Install the gtk-3 development headers first. On Debian, this can be done using:
apt-get install libgtk-3-dev
The build is the traditional:
./configure
make
make install
You may want to consider using configure's prefix option to install
Gtk# using the same prefix as Mono. That way all of your .NET assemblies
get placed in the same place, and you don't need to do any extra "configuring"
to make it so mono (and mint) can find your assemblies. In other words,
doing something like:
./configure --prefix=`pkg-config --variable=prefix mono`
make
make install
If you are compiling from GIT, you will need libtool and the auto* tools
and will need to replace the configure above with autogen.sh.
The gui-thread-check profiler module.
-------------------------------------
Since version 3 of gtk# a profiler called "gui-thread-check" is included as
part of the install for debugging purposes. (It's located in the subfolder
gtk/gui-thread-check .)
This profiler module can be used to check if a GTK# application is trying to
invoke gtk or gdk methods from a thread which is not the main GUI thread.
To use it, run your application with the command:
mono --profile=gui-thread-check yourapp.exe
If the profiler is properly installed, you'll see an output like this:
*** Running with gui-thread-check ***
*** GUI THREAD INITIALIZED: 2861676352
While the application is running, if the profiler detects a non-gui thread
invoking gtk methods, it will print a warning message together with a
stack trace. For example:
*** GTK CALL NOT IN GUI THREAD: Widget.gtk_widget_get_parent
Widget.get_Parent
SourceEditorWidget.SetLastActiveEditor
SourceEditorWidget.get_TextEditor
SourceEditorWidget.get_Document
SourceEditorWidget.HandleParseInformationUpdaterWorkerThreadDoWork
BackgroundWorker.OnDoWork
BackgroundWorker.ProcessWorker
Discussion & Support:
---------------------
A mailing list for Gtk# discussion is available.
You can subscribe to the mailing list by visiting:
http://lists.ximian.com/mailman/listinfo/gtk-sharp-list
And following the instructions (on that page) to subscribe.
Messages are posted on this mailing list by sending them to:
gtk-sharp-list@ximian.com
(The mailing list requires you to subscribe in order to post
messages.)
An archive of this mailing list can be found at:
http://lists.ximian.com/archives/public/gtk-sharp-list/
Also, people can get help with and discuss Gtk# on IRC via the
#gtk# or #mono channels on the irc.gnome.org IRC server.
People looking for general help with C# should visit the
#c# channel on irc.freenode.net IRC server.
Developers:
-----------
For developers wishing to "get started" with Gtk#, they are encouraged
to read the Mono Hand Book:
http://www.mono-project.com/Monkeyguide
Hackers:
--------
For those who wish to help with the development of Gtk#, they should
read the file named: HACKING.
Also, anyone wishing to hack Gtk# is encouraged to join the Gtk#
mailing list. And to visit the #gtk# IRC channel (on irc.gnome.org).