CPF/CPF.Linux/XError.cs
2023-11-21 23:05:03 +08:00

36 lines
1.1 KiB
C#

using System;
using System.Collections.Generic;
using System.Text;
namespace CPF.Linux
{
static class XError
{
private static readonly XErrorHandler s_errorHandlerDelegate = Handler;
public static XErrorEvent LastError;
static int Handler(IntPtr display, ref XErrorEvent error)
{
LastError = error;
//StringBuilder stringBuilder = new StringBuilder(100);
//XLib.XGetErrorText(error.display, error.error_code, stringBuilder, stringBuilder.Length);
//Console.WriteLine("异常:" + stringBuilder.ToString() + " " + error.request_code + ":" + error.error_code);
return 0;
}
public static void ThrowLastError(string desc)
{
var err = LastError;
LastError = new XErrorEvent();
if (err.error_code == 0)
throw new Exception(desc);
throw new Exception(desc + ": " + err.error_code);
}
public static void Init()
{
XLib.XSetErrorHandler(s_errorHandlerDelegate);
}
}
}