Browse Source

[GTK3] Use lower priority for timers created by Signal()

pull/1105/head
Nikita Tsukanov 9 years ago
parent
commit
fe6e8a4d2b
  1. 2
      src/Gtk/Avalonia.Gtk3/Gtk3Platform.cs
  2. 6
      src/Gtk/Avalonia.Gtk3/Interop/GlibTimeout.cs
  3. 3
      src/Gtk/Avalonia.Gtk3/Interop/Native.cs

2
src/Gtk/Avalonia.Gtk3/Gtk3Platform.cs

@ -77,7 +77,7 @@ namespace Avalonia.Gtk3
if (!_signaled)
{
_signaled = true;
GlibTimeout.Add(0, () =>
GlibTimeout.Add(100, 0, () =>
{
lock (_lock)
{

6
src/Gtk/Avalonia.Gtk3/Interop/GlibTimeout.cs

@ -35,6 +35,12 @@ namespace Avalonia.Gtk3.Interop
var handle = GCHandle.Alloc(callback);
Native.GTimeoutAdd(interval, PinnedHandler, GCHandle.ToIntPtr(handle));
}
public static void Add(int priority, uint interval, Func<bool> callback)
{
var handle = GCHandle.Alloc(callback);
Native.GTimeoutAddFull(priority, interval, PinnedHandler, GCHandle.ToIntPtr(handle), IntPtr.Zero);
}
class Timer : IDisposable
{

3
src/Gtk/Avalonia.Gtk3/Interop/Native.cs

@ -241,6 +241,8 @@ namespace Avalonia.Gtk3.Interop
[UnmanagedFunctionPointer(CallingConvention.Cdecl), GtkImport(GtkDll.Glib)]
public delegate ulong g_timeout_add(uint interval, timeout_callback callback, IntPtr data);
[UnmanagedFunctionPointer(CallingConvention.Cdecl), GtkImport(GtkDll.Glib)]
public delegate ulong g_timeout_add_full(int prio, uint interval, timeout_callback callback, IntPtr data, IntPtr destroy);
[UnmanagedFunctionPointer(CallingConvention.Cdecl), GtkImport(GtkDll.Glib)]
public delegate ulong g_free(IntPtr data);
[UnmanagedFunctionPointer(CallingConvention.Cdecl), GtkImport(GtkDll.Glib)]
public unsafe delegate void g_slist_free(GSList* data);
@ -302,6 +304,7 @@ namespace Avalonia.Gtk3.Interop
public static D.g_signal_connect_object GSignalConnectObject;
public static D.g_signal_handler_disconnect GSignalHandlerDisconnect;
public static D.g_timeout_add GTimeoutAdd;
public static D.g_timeout_add_full GTimeoutAddFull;
public static D.g_free GFree;
public static D.g_slist_free GSlistFree;
public static D.g_memory_input_stream_new_from_data GMemoryInputStreamNewFromData;

Loading…
Cancel
Save