Esempio n. 1
0
        /// <summary>
        /// Sets the log handler for a domain and a set of log levels.
        /// </summary>
        /// <param name="logDomain">the log domain, or <see langword="null" /> for the default "" application domain</param>
        /// <param name="flags">the log levels to apply the log handler for</param>
        /// <param name="logFunc">the log handler function</param>
        /// <returns>the id of the handler</returns>
        public static uint SetLogHandler(string logDomain, Enums.LogLevelFlags flags, LogFunc logFunc)
        {
            if (_nativeHandler == null)
            {
                _nativeHandler = NativeCallback;
            }

            var gch    = GCHandle.Alloc(logFunc);
            var result = GLib.GLogSetHandler(logDomain, flags, _nativeHandler, (IntPtr)gch);

            _handlers.AddOrUpdate(result, gch, (k, v) => gch);
            return(result);
        }
Esempio n. 2
0
        /// <summary>
        /// Installs a default log handler which is used if no log handler
        /// has been set for the particular log domain and log level combination.
        /// </summary>
        /// <param name="logFunc">the log handler function</param>
        /// <returns>the previous default log handler</returns>
        public static LogFunc SetDefaultHandler(LogFunc logFunc)
        {
            if (_nativeHandler == null)
            {
                _nativeHandler = NativeCallback;
            }

            var prev = GLib.GLogSetDefaultHandler(_nativeHandler, (IntPtr)GCHandle.Alloc(logFunc));

            if (prev == null)
            {
                return(null);
            }
            var invoker = new Invoker(prev);

            return(invoker.Handler);
        }
Esempio n. 3
0
 public Invoker(GLib.LogFuncNative native)
 {
     this.native = native;
 }