22#include <winpr/wlog.h>
23#include <winpr/wtypes.h>
29const char* x11_error_to_string(xfContext* xfc,
int error,
char* buffer,
size_t size);
31#define X_GET_ATOM_VAR_NAME(x) #x
32#define Safe_XGetAtomName(log, display, atom) \
33 Safe_XGetAtomNameEx((log), (display), (atom), X_GET_ATOM_VAR_NAME(atom))
34char* Safe_XGetAtomNameEx(wLog* log, Display* display, Atom atom,
const char* varname);
35Atom Logging_XInternAtom(wLog* log, Display* display, _Xconst
char* atom_name, Bool only_if_exists);
37typedef BOOL (*fn_action_script_run)(xfContext* xfc,
const char* buffer,
size_t size,
void* user,
38 const char* what,
const char* arg);
39BOOL run_action_script(xfContext* xfc,
const char* what,
const char* arg, fn_action_script_run fkt,
42#define LogDynAndXCreatePixmap(log, display, d, width, height, depth) \
43 LogDynAndXCreatePixmap_ex((log), __FILE__, __func__, __LINE__, (display), (d), (width), \
46Pixmap LogDynAndXCreatePixmap_ex(wLog* log,
const char* file,
const char* fkt,
size_t line,
47 Display* display, Drawable d,
unsigned int width,
48 unsigned int height,
unsigned int depth);
50#define LogDynAndXFreePixmap(log, display, pixmap) \
51 LogDynAndXFreePixmap_ex(log, __FILE__, __func__, __LINE__, (display), (pixmap))
53int LogDynAndXFreePixmap_ex(wLog* log,
const char* file,
const char* fkt,
size_t line,
54 Display* display, Pixmap pixmap);
56#define LogDynAndXCreateWindow(log, display, parent, x, y, width, height, border_width, depth, \
57 class, visual, valuemask, attributes) \
58 LogDynAndXCreateWindow_ex((log), __FILE__, __func__, __LINE__, (display), (parent), (x), (y), \
59 (width), (height), (border_width), (depth), (class), (visual), \
60 (valuemask), (attributes))
62Window LogDynAndXCreateWindow_ex(wLog* log,
const char* file,
const char* fkt,
size_t line,
63 Display* display, Window parent,
int x,
int y,
unsigned int width,
64 unsigned int height,
unsigned int border_width,
int depth,
65 unsigned int class, Visual* visual,
unsigned long valuemask,
66 XSetWindowAttributes* attributes);
68#define LogDynAndXRaiseWindow(log, display, w) \
69 LogDynAndXRaiseWindow_ex((log), __FILE__, __func__, __LINE__, (display), (w))
71int LogDynAndXRaiseWindow_ex(wLog* log,
const char* file,
const char* fkt,
size_t line,
72 Display* display, Window w);
74#define LogDynAndXMapWindow(log, display, w) \
75 LogDynAndXMapWindow_ex((log), __FILE__, __func__, __LINE__, (display), (w))
77int LogDynAndXMapWindow_ex(wLog* log,
const char* file,
const char* fkt,
size_t line,
78 Display* display, Window w);
80#define LogDynAndXUnmapWindow(log, display, w) \
81 LogDynAndXUnmapWindow_ex((log), __FILE__, __func__, __LINE__, (display), (w))
83int LogDynAndXUnmapWindow_ex(wLog* log,
const char* file,
const char* fkt,
size_t line,
84 Display* display, Window w);
86#define LogDynAndXMoveResizeWindow(log, display, w, x, y, width, height) \
87 LogDynAndXMoveResizeWindow_ex((log), __FILE__, __func__, __LINE__, (display), (w), (x), (y), \
90int LogDynAndXMoveResizeWindow_ex(wLog* log,
const char* file,
const char* fkt,
size_t line,
91 Display* display, Window w,
int x,
int y,
unsigned int width,
94#define LogDynAndXWithdrawWindow(log, display, w, screen_number) \
95 LogDynAndXWithdrawWindow_ex((log), __FILE__, __func__, __LINE__, (display), (w), \
98Status LogDynAndXWithdrawWindow_ex(wLog* log,
const char* file,
const char* fkt,
size_t line,
99 Display* display, Window w,
int screen_number);
101#define LogDynAndXMoveWindow(log, display, w, x, y) \
102 LogDynAndXMoveWindow_ex((log), __FILE__, __func__, __LINE__, (display), (w), (x), (y))
104int LogDynAndXMoveWindow_ex(wLog* log,
const char* file,
const char* fkt,
size_t line,
105 Display* display, Window w,
int x,
int y);
107#define LogDynAndXResizeWindow(log, display, w, width, height) \
108 LogDynAndXResizeWindow_ex((log), __FILE__, __func__, __LINE__, (display), (w), (width), \
111int LogDynAndXResizeWindow_ex(wLog* log,
const char* file,
const char* fkt,
size_t line,
112 Display* display, Window w,
unsigned int width,
unsigned int height);
114#define LogDynAndXClearWindow(log, display, w) \
115 LogDynAndXClearWindow_ex((log), __FILE__, __func__, __LINE__, (display), (w))
117int LogDynAndXClearWindow_ex(wLog* log,
const char* file,
const char* fkt,
size_t line,
118 Display* display, Window w);
120#define LogDynAndXGetWindowProperty(log, display, w, property, long_offset, long_length, delete, \
121 req_type, actual_type_return, actual_format_return, \
122 nitems_return, bytes_after_return, prop_return) \
123 LogDynAndXGetWindowProperty_ex((log), __FILE__, __func__, __LINE__, (display), (w), \
124 (property), (long_offset), (long_length), (delete), (req_type), \
125 (actual_type_return), (actual_format_return), (nitems_return), \
126 (bytes_after_return), (prop_return))
128int LogDynAndXGetWindowProperty_ex(wLog* log,
const char* file,
const char* fkt,
size_t line,
129 Display* display, Window w, Atom property,
long long_offset,
130 long long_length, Bool
delete, Atom req_type,
131 Atom* actual_type_return,
int* actual_format_return,
132 unsigned long* nitems_return,
unsigned long* bytes_after_return,
133 unsigned char** prop_return);
135#define LogDynAndXReparentWindow(log, display, w, parent, x, y) \
136 LogDynAndXReparentWindow_ex((log), __FILE__, __func__, __LINE__, (display), (w), (parent), \
139int LogDynAndXReparentWindow_ex(wLog* log,
const char* file,
const char* fkt,
size_t line,
140 Display* display, Window w, Window parent,
int x,
int y);
142#define LogDynAndXChangeProperty(log, display, w, property, type, format, mode, data, nelements) \
143 LogDynAndXChangeProperty_ex((log), __FILE__, __func__, __LINE__, (display), (w), (property), \
144 (type), (format), (mode), (data), (nelements))
145int LogDynAndXChangeProperty_ex(wLog* log,
const char* file,
const char* fkt,
size_t line,
146 Display* display, Window w, Atom property, Atom type,
int format,
147 int mode, _Xconst
unsigned char* data,
int nelements);
149#define LogDynAndXDeleteProperty(log, display, w, property) \
150 LogDynAndXDeleteProperty_ex((log), __FILE__, __func__, __LINE__, (display), (w), (property))
151int LogDynAndXDeleteProperty_ex(wLog* log,
const char* file,
const char* fkt,
size_t line,
152 Display* display, Window w, Atom property);
154#define LogDynAndXConvertSelection(log, display, selection, target, property, requestor, time) \
155 LogDynAndXConvertSelection_ex((log), __FILE__, __func__, __LINE__, (display), (selection), \
156 (target), (property), (requestor), (time))
157int LogDynAndXConvertSelection_ex(wLog* log,
const char* file,
const char* fkt,
size_t line,
158 Display* display, Atom selection, Atom target, Atom property,
159 Window requestor, Time time);
161#define LogDynAndXCreateGC(log, display, d, valuemask, values) \
162 LogDynAndXCreateGC_ex(log, __FILE__, __func__, __LINE__, (display), (d), (valuemask), (values))
164GC LogDynAndXCreateGC_ex(wLog* log,
const char* file,
const char* fkt,
size_t line,
165 Display* display, Drawable d,
unsigned long valuemask, XGCValues* values);
167#define LogDynAndXFreeGC(log, display, gc) \
168 LogDynAndXFreeGC_ex(log, __FILE__, __func__, __LINE__, (display), (gc))
170int LogDynAndXFreeGC_ex(wLog* log,
const char* file,
const char* fkt,
size_t line, Display* display,
173#define LogDynAndXCreateImage(log, display, visual, depth, format, offset, data, width, height, \
174 bitmap_pad, bytes_per_line) \
175 LogDynAndXCreateImage_ex(log, __FILE__, __func__, __LINE__, (display), (visual), (depth), \
176 (format), (offset), (data), (width), (height), (bitmap_pad), \
178XImage* LogDynAndXCreateImage_ex(wLog* log,
const char* file,
const char* fkt,
size_t line,
179 Display* display, Visual* visual,
unsigned int depth,
int format,
180 int offset,
char* data,
unsigned int width,
unsigned int height,
181 int bitmap_pad,
int bytes_per_line);
183#define LogDynAndXPutImage(log, display, d, gc, image, src_x, src_y, dest_x, dest_y, width, \
185 LogDynAndXPutImage_ex(log, __FILE__, __func__, __LINE__, (display), (d), (gc), (image), \
186 (src_x), (src_y), (dest_x), (dest_y), (width), (height))
187int LogDynAndXPutImage_ex(wLog* log,
const char* file,
const char* fkt,
size_t line,
188 Display* display, Drawable d, GC gc, XImage* image,
int src_x,
int src_y,
189 int dest_x,
int dest_y,
unsigned int width,
unsigned int height);
191#define LogDynAndXCopyArea(log, display, src, dest, gc, src_x, src_y, width, height, dest_x, \
193 LogDynAndXCopyArea_ex(log, __FILE__, __func__, __LINE__, (display), (src), (dest), (gc), \
194 (src_x), (src_y), (width), (height), (dest_x), (dest_y))
195extern int LogDynAndXCopyArea_ex(wLog* log,
const char* file,
const char* fkt,
size_t line,
196 Display* display, Pixmap src, Window dest, GC gc,
int src_x,
197 int src_y,
unsigned int width,
unsigned int height,
int dest_x,
200#define LogDynAndXSendEvent(log, display, w, propagate, event_mask, event_send) \
201 LogDynAndXSendEvent_ex(log, __FILE__, __func__, __LINE__, (display), (w), (propagate), \
202 (event_mask), (event_send))
203extern Status LogDynAndXSendEvent_ex(wLog* log,
const char* file,
const char* fkt,
size_t line,
204 Display* display, Window w, Bool propagate,
long event_mask,
207#define LogDynAndXFlush(log, display) \
208 LogDynAndXFlush_ex(log, __FILE__, __func__, __LINE__, (display))
209extern Status LogDynAndXFlush_ex(wLog* log,
const char* file,
const char* fkt,
size_t line,
212#define LogDynAndXSync(log, display, discard) \
213 LogDynAndXSync_ex(log, __FILE__, __func__, __LINE__, (display), (discard))
214extern int LogDynAndXSync_ex(wLog* log,
const char* file,
const char* fkt,
size_t line,
215 Display* display, Bool discard);
217#define LogDynAndXGetSelectionOwner(log, display, selection) \
218 LogDynAndXGetSelectionOwner_ex(log, __FILE__, __func__, __LINE__, (display), (selection))
219extern Window LogDynAndXGetSelectionOwner_ex(wLog* log,
const char* file,
const char* fkt,
220 size_t line, Display* display, Atom selection);
222#define LogDynAndXSetSelectionOwner(log, display, selection, owner, time) \
223 LogDynAndXSetSelectionOwner_ex(log, __FILE__, __func__, __LINE__, (display), (selection), \
225extern int LogDynAndXSetSelectionOwner_ex(wLog* log,
const char* file,
const char* fkt,
size_t line,
226 Display* display, Atom selection, Window owner,
229#define LogDynAndXDestroyWindow(log, display, window) \
230 LogDynAndXDestroyWindow_ex(log, __FILE__, __func__, __LINE__, (display), (window))
231extern int LogDynAndXDestroyWindow_ex(wLog* log,
const char* file,
const char* fkt,
size_t line,
232 Display* display, Window window);
234#define LogDynAndXChangeWindowAttributes(log, display, window, valuemask, attributes) \
235 LogDynAndXChangeWindowAttributes_ex(log, __FILE__, __func__, __LINE__, (display), (window), \
236 (valuemask), (attributes))
237extern int LogDynAndXChangeWindowAttributes_ex(wLog* log,
const char* file,
const char* fkt,
238 size_t line, Display* display, Window window,
239 unsigned long valuemask,
240 XSetWindowAttributes* attributes);
242#define LogDynAndXSetTransientForHint(log, display, window, prop_window) \
243 LogDynAndXSetTransientForHint_ex(log, __FILE__, __func__, __LINE__, (display), (window), \
245extern int LogDynAndXSetTransientForHint_ex(wLog* log,
const char* file,
const char* fkt,
246 size_t line, Display* display, Window window,
249#define LogDynAndXCloseDisplay(log, display) \
250 LogDynAndXCloseDisplay_ex(log, __FILE__, __func__, __LINE__, (display))
251extern int LogDynAndXCloseDisplay_ex(wLog* log,
const char* file,
const char* fkt,
size_t line,
254#define LogDynAndXSetClipMask(log, display, gc, pixmap) \
255 LogDynAndXSetClipMask_ex(log, __FILE__, __func__, __LINE__, (display), (gc), (pixmap))
256extern int LogDynAndXSetClipMask_ex(wLog* log,
const char* file,
const char* fkt,
size_t line,
257 Display* display, GC gc, Pixmap pixmap);
259#define LogDynAndXSetRegion(log, display, gc, r) \
260 LogDynAndXSetRegion_ex(log, __FILE__, __func__, __LINE__, (display), (gc), (r))
261extern int LogDynAndXSetRegion_ex(wLog* log,
const char* file,
const char* fkt,
size_t line,
262 Display* display, GC gc, Region r);
264#define LogDynAndXSetBackground(log, display, gc, background) \
265 LogDynAndXSetBackground_ex(log, __FILE__, __func__, __LINE__, (display), (gc), (background))
266extern int LogDynAndXSetBackground_ex(wLog* log,
const char* file,
const char* fkt,
size_t line,
267 Display* display, GC gc,
unsigned long background);
269#define LogDynAndXSetForeground(log, display, gc, foreground) \
270 LogDynAndXSetForeground_ex(log, __FILE__, __func__, __LINE__, (display), (gc), (foreground))
271extern int LogDynAndXSetForeground_ex(wLog* log,
const char* file,
const char* fkt,
size_t line,
272 Display* display, GC gc,
unsigned long foreground);
274#define LogDynAndXSetFillStyle(log, display, gc, fill_style) \
275 LogDynAndXSetFillStyle_ex(log, __FILE__, __func__, __LINE__, (display), (gc), (fill_style))
276extern int LogDynAndXSetFillStyle_ex(wLog* log,
const char* file,
const char* fkt,
size_t line,
277 Display* display, GC gc,
int fill_style);
279#define LogDynAndXFillRectangle(log, display, w, gc, x, y, width, height) \
280 LogDynAndXFillRectangle_ex(log, __FILE__, __func__, __LINE__, (display), (w), (gc), (x), (y), \
282extern int LogDynAndXFillRectangle_ex(wLog* log,
const char* file,
const char* fkt,
size_t line,
283 Display* display, Window w, GC gc,
int x,
int y,
284 unsigned int width,
unsigned int height);
286#define LogDynAndXSetFunction(log, display, gc, function) \
287 LogDynAndXSetFunction_ex(log, __FILE__, __func__, __LINE__, (display), (gc), (function))
288extern int LogDynAndXSetFunction_ex(wLog* log,
const char* file,
const char* fkt,
size_t line,
289 Display* display, GC gc,
int function);