diff --git a/src/Libs/GLib-2.0/Public/MainLoop.cs b/src/Libs/GLib-2.0/Public/MainLoop.cs index 645d7735e..3c4a2e82f 100644 --- a/src/Libs/GLib-2.0/Public/MainLoop.cs +++ b/src/Libs/GLib-2.0/Public/MainLoop.cs @@ -12,6 +12,11 @@ private MainLoop(Internal.MainContextHandle context, bool isRunning) _handle = Internal.MainLoop.New(context, isRunning); } + public MainContext GetContext() + { + return new MainContext(Internal.MainLoop.GetContext(Handle)); + } + public bool IsRunning() => Internal.MainLoop.IsRunning(Handle); public void Run() => Internal.MainLoop.Run(Handle); diff --git a/src/Libs/GLib-2.0/Public/Source.cs b/src/Libs/GLib-2.0/Public/Source.cs index 22d4885f3..d401bc8d6 100644 --- a/src/Libs/GLib-2.0/Public/Source.cs +++ b/src/Libs/GLib-2.0/Public/Source.cs @@ -1,6 +1,19 @@ -namespace GLib; +using System; + +namespace GLib; public partial class Source { + public void SetCallback(SourceFunc sourceFunc) + { + var handler = new Internal.SourceFuncNotifiedHandler(sourceFunc); + Internal.Source.SetCallback(Handle, handler.NativeCallback, IntPtr.Zero, handler.DestroyNotify); + } + + public void Attach(MainContext mainContext) + { + Internal.Source.Attach(Handle, mainContext.Handle); + } + public static void Remove(uint tag) => Internal.Functions.SourceRemove(tag); }