Create a GLibSynchronizationContext that sends code to be run on the
GLib main loop, and set it as the current SynchronizationContext in
Gtk.Init().
When you use the await keyword to do a task asynchronously, by default
the awaiter will capture the current SynchronizationContext, and if
there was one, when the task completes it’ll Post the supplied
continuation back to that context, rather than running it on whatever
thread it wants.
This means that if you use the async/await keywords in your Gtk# app,
things will now work as expected with the GTK main thread. For example:
static async void DoWork () // called in the GTK main thread
{
// Do some stuff with the UI...
label.Text = "Starting Work";
// Run something asynchronously, UI is not frozen
int res = await DoLongOperation ();
// Do some more UI stuff, it'll run on the GTK main thread
label.Text = "Work done";
}
Signed-off-by: Bertrand Lorentz <bertrand.lorentz@gmail.com>
* *: s/win32-2.0-0/win32-3.0-0/ I suspect this will need to change
again when I see some win32 binaries. I think the win32 goes away.
Killing a few dead customs in the list as well.
* gtk/Application.cs: Port the theming-relevant part of the
SWF.Application.DoEvents code to avoid loading the assembly
at runtime on the Windows platform.
svn path=/trunk/gtk-sharp/; revision=141783
* glib/Global.cs: Kill the calling convention field again.
It breaks GLib 2.x compatibility in the generator and there is
probably no need to make the calling convention configurable.
* .cs, *.custom: Hardcode Cdecl calling convention instead of
using GLib's field.
svn path=/trunk/gtk-sharp/; revision=141283
* glib/Global.cs: Add a public constant field specifying the
calling convention used by GLib and depending libraries.
By now it's hardcoded to Cdecl as every non-Win32 runtime
should ignore this attribute.
* *.cs, *.custom: Use GLib.Global.CallingConvention for both
pinvokes and callbacks. Plugs a stack leak on Win32. All
pinvokes defaulted to StdCall and thus the stack was never
cleaned up.
svn path=/trunk/gtk-sharp/; revision=141175
* gtk/Application.cs: add the theme initialization workaround for
windows. Hopefully we can find a better solution that doesn't
involve loading SWF. [Fixes#471682]
svn path=/trunk/gtk-sharp/; revision=134008
* glib/ToggleRef.cs: Add a Harden method to switch to a standard
ref and just leak it.
* gtk/Application.cs: revert the QuitPrepare stuff since it didn't
always work.
svn path=/trunk/gtk-sharp/; revision=101021
* glib/Global.cs: renamed from Program.cs. Program.Name is now
Global.ProgramName to try to avoid clashes with existing Gnome.Program
usage.
* gtk/Application.cs: s/GLib.Program.Name/GLib.Global.ProgramName.
svn path=/trunk/gtk-sharp/; revision=99875
the code to call g_set_prgname() from gtk/Application.cs to here,
and changing return value of g_set_program_name from bool to void.
* gtk/Application.cs: Use Program.Name as a replacement of
calling the native function g_set_prgname().
* glib/Makefile.am: add Program.cs.
(Patch reviewed by mkestner)
svn path=/trunk/gtk-sharp/; revision=99134
* gtk/Application.custom : set prgname in Init methods so
that WM_CLASS is more appropriate. Programs using Gnome.Program
already get a nice prgname, but Gtk.Application.Init apps were
getting a path instead of a filename without extension.
svn path=/trunk/gtk-sharp/; revision=73766
* */*.cs : add lgpl license blurb and clean up (c)'s.
* */*.custom : add lgpl license blurb and clean up (c)'s.
* */glue/*.c : add lgpl license blurb and clean up (c)'s.
file adds without license from now on are punishable by wedgie.
svn path=/trunk/gtk-sharp/; revision=30401
* glib/Marshaller.cs (ArrayPtrToArgv, ArgvToArrayPtr): new
functions for marshalling and unmarshalling string arrays
to/from char **. Not pretty, but lets us call gtk_init()
in Gtk.
* gtk/Application.cs (do_init): New helper function to handle
passing args to Gtk. Uses above functions.
(Init): Use do_init, take a new progname parameter.
(InitCheck): Same.
doc/:
2003-01-13 Peter Williams <peter@newton.cx>
* en/Gtk/Application.xml: Update Init, InitCheck functions
for new progname argument. Fix a paste-o in the docs for InitCheck.
svn path=/trunk/gtk-sharp/; revision=22237
* gtk/Application.cs (CurrentEvent): Property implementing the
suggestion from Paolo.
* glib/Object.cs (Dispose): Destructor might be invoked in a
thread, queue the object for destruction using the Gtk idle
handler. We perform the real destruction of the object in the
same thread as the Gtk+ main thread.
svn path=/trunk/gtk-sharp/; revision=12551
* gtk/Application.cs: Do not allow instances of Application to be
created.
(InitCheck): new method, wraps gtk_init_check.
Removed inline docs from here. Put them on the documentation
file.
svn path=/trunk/gtk-sharp/; revision=12418
* glib/Object.cs, glib/SList.cs, glib/Value.cs, gtk/Application.cs:
Move documentation to right before their actual methods, rather
than the DllImported ones.
* generator/Method.cs: Generate documentation before the actual
method and not the DllImport.
svn path=/trunk/gtk-sharp/; revision=5423
*.cs : Added .dll extension to a load of DllImports.
* makefile : now can make the project with one make windows and on
both NT and Win98.
* gdk/Event.cs : Fixed some invalid symbol names and commented out a
load of stuff.
* gdk/SimpleEvent.cs : Relocated file from unnecessary subdir and fixed
several event keyword clashing bugs. Need to relocate the EventArgs
class out of here into its own file. Fixed loads of typos.
* glib/Object.cs : Killed the Constructor, this should be a purely
abstract class. made Events property public until I can fix the Signal
proxying system's broken reliance on it.
* glib/SimpleSignal.cs : Relocated, namespaces, and named this Class.
Loads of bugfixes. Still doesn't work worth a damn, but it builds.
* glib/TypeFundamentals.cs : New enum for use in the Value code.
* glib/Value.cs : Implemented a more opaque approach with heap allocated
memory and g_value_init and friends. Still doesn't work. Will probably
switch to a more C# like approach and avoid GValues altogether.
* gtk/Button.cs : Commented out some brokeness until I can get around
to fixing it later.
* gtk/Widget.cs : Commented out a bunch of the new signal stuff until
I get around to it.
* gtk/Window.cs (Title): using g_object_set until I work out the
details of the new Value/SetProperty system. It looks like g_object_set
will end up being easier to use via PInvoke.
svn path=/trunk/gtk-sharp/; revision=1008