From 30cc445cdeaf2e7e5ed5a69adae4eb16841f277d Mon Sep 17 00:00:00 2001 From: bsp2 Date: Fri, 26 Oct 2018 14:14:05 +0200 Subject: [PATCH] add Dlog*() macros (4 verbosity levels) --- dep/lglw/lglw_linux.c | 334 ++++++++++++++++++++++-------------------- 1 file changed, 177 insertions(+), 157 deletions(-) diff --git a/dep/lglw/lglw_linux.c b/dep/lglw/lglw_linux.c index 9a9f6f22..a2271a7a 100644 --- a/dep/lglw/lglw_linux.c +++ b/dep/lglw/lglw_linux.c @@ -47,15 +47,41 @@ #include #endif // ARCH_X64 +// +// Regular log entry (low frequency) +// +// #define Dlog_verbose if(1);else lglw_log +#define Dlog if(0);else lglw_log + +// +// Verbose log entry +// +// #define Dlog_v if(1);else lglw_log +#define Dlog_v if(0);else lglw_log + +// +// Very-verbose log entry +// +// #define Dlog_vv if(1);else lglw_log +#define Dlog_vv if(0);else lglw_log + +// +// Very-very-verbose log entry +// +#define Dlog_vvv if(1);else lglw_log +// #define Dlog_vvv if(0);else lglw_log + +// +// Print to stdout +// +// Please use the Dlog* macros instead! +// #define Dprintf if(0);else printf // #define Dprintf if(1);else printf #define Dprintf_verbose if(1);else printf // #define Dprintf_verbose if(0);else printf -#define Dlog_verbose if(1);else lglw_log -// #define Dlog_verbose if(0);else lglw_log - // ---------------------------------------------------------------------------- macros and defines #define LGLW(a) lglw_int_t *lglw = ((lglw_int_t*)(a)) @@ -212,7 +238,7 @@ void lglw_log(const char *logData, ...) { static int xerror_handler(Display *display, XErrorEvent *error) { char error_text[1024]; XGetErrorText(display, error->error_code, error_text, 1024); - lglw_log("XERROR (%d): %s, %d, %d\n", error->error_code, error_text, error->request_code, error->minor_code); + Dlog("XERROR (%d): %s, %d, %d\n", error->error_code, error_text, error->request_code, error->minor_code); return 0; } @@ -221,7 +247,7 @@ static int xerror_handler(Display *display, XErrorEvent *error) { lglw_t lglw_init(int32_t _w, int32_t _h) { lglw_int_t *lglw = malloc(sizeof(lglw_int_t)); - printf("xxx lglw_init: sizeof(uint32_t)=%lu sizeof(long)=%lu sizeof(void*)=%lu\n", sizeof(uint32_t), sizeof(long), sizeof(void*)); + Dprintf("xxx lglw_init: sizeof(uint32_t)=%lu sizeof(long)=%lu sizeof(void*)=%lu\n", sizeof(uint32_t), sizeof(long), sizeof(void*)); // TODO: remove/improve logfile = fopen("/tmp/lglw_log.txt", "w"); @@ -234,23 +260,23 @@ lglw_t lglw_init(int32_t _w, int32_t _h) { { memset(lglw, 0, sizeof(lglw_int_t)); - lglw_log("lglw:lglw_init: 1\n"); + Dlog("lglw:lglw_init: 1\n"); if(_w <= 16) _w = LGLW_DEFAULT_HIDDEN_W; if(_h <= 16) _h = LGLW_DEFAULT_HIDDEN_H; - lglw_log("lglw:lglw_init: 2\n"); + Dlog("lglw:lglw_init: 2\n"); if(!loc_create_hidden_window(lglw, _w, _h)) { free(lglw); lglw = NULL; } - lglw_log("lglw:lglw_init: 3\n"); + Dlog("lglw:lglw_init: 3\n"); } - lglw_log("lglw:lglw_init: EXIT\n"); + Dlog("lglw:lglw_init: EXIT\n"); return lglw; } @@ -262,11 +288,11 @@ void lglw_exit(lglw_t _lglw) { if(NULL != lglw) { - lglw_log("lglw:lglw_exit: 1\n"); + Dlog("lglw:lglw_exit: 1\n"); loc_destroy_hidden_window(lglw); - lglw_log("lglw:lglw_exit: 2\n"); + Dlog("lglw:lglw_exit: 2\n"); fclose(logfile); free(lglw); @@ -280,7 +306,7 @@ void lglw_userdata_set(lglw_t _lglw, void *_userData) { if(NULL != lglw) { - // lglw_log("lglw:lglw_userdata_set: 1\n"); + Dlog_vvv("lglw:lglw_userdata_set: ptr=%p\n", _userData); lglw->user_data = _userData; } } @@ -291,7 +317,7 @@ void *lglw_userdata_get(lglw_t _lglw) { if(NULL != lglw) { - // lglw_log("lglw:lglw_userdata_get: 1\n"); + Dlog_vvv("lglw:lglw_userdata_get: return ptr=%p\n", lglw->user_data); return lglw->user_data; } @@ -304,51 +330,51 @@ static lglw_bool_t loc_create_hidden_window(lglw_int_t *lglw, int32_t _w, int32_ // TODO: compare to 'WindowClass' from Windows implementation - lglw_log("lglw:loc_create_hidden_window: 1\n"); + Dlog_v("lglw:loc_create_hidden_window: 1\n"); XSetWindowAttributes swa; int attrib[] = { GLX_RGBA, GLX_DOUBLEBUFFER, GLX_DEPTH_SIZE, 24, None }; int screen; - lglw_log("lglw:loc_create_hidden_window: 2\n"); + Dlog_v("lglw:loc_create_hidden_window: 2\n"); lglw->xdsp = XOpenDisplay(NULL); screen = DefaultScreen(lglw->xdsp); - lglw_log("lglw:loc_create_hidden_window: 3\n"); + Dlog_v("lglw:loc_create_hidden_window: 3\n"); lglw->vi = glXChooseVisual(lglw->xdsp, screen, attrib); - lglw_log("lglw:loc_create_hidden_window: 4\n"); + Dlog_v("lglw:loc_create_hidden_window: 4\n"); if(NULL == lglw->vi) { - lglw_log("[---] lglw: failed to find GLX Visual for hidden window\n"); + Dlog("[---] lglw: failed to find GLX Visual for hidden window\n"); return LGLW_FALSE; } - lglw_log("lglw:loc_create_hidden_window: 5\n"); + Dlog_v("lglw:loc_create_hidden_window: 5\n"); lglw->ctx = glXCreateContext(lglw->xdsp, lglw->vi, None, True); - lglw_log("lglw:loc_create_hidden_window: 6\n"); + Dlog_v("lglw:loc_create_hidden_window: 6\n"); if(NULL == lglw->ctx) { - lglw_log("[---] lglw: failed to create GLX Context for hidden window\n"); + Dlog("[---] lglw: failed to create GLX Context for hidden window\n"); return LGLW_FALSE; } - lglw_log("lglw:loc_create_hidden_window: 7\n"); + Dlog_v("lglw:loc_create_hidden_window: 7\n"); lglw->cmap = XCreateColormap(lglw->xdsp, RootWindow(lglw->xdsp, lglw->vi->screen), lglw->vi->visual, AllocNone); - lglw_log("lglw:loc_create_hidden_window: 8\n"); + Dlog_v("lglw:loc_create_hidden_window: 8\n"); swa.border_pixel = 0; swa.colormap = lglw->cmap; lglw->hidden.xwnd = XCreateWindow(lglw->xdsp, DefaultRootWindow(lglw->xdsp), - 0, 0, LGLW_DEFAULT_HIDDEN_W, LGLW_DEFAULT_HIDDEN_H, 0, CopyFromParent, InputOutput, - lglw->vi->visual, CWBorderPixel | CWColormap, &swa); + 0, 0, LGLW_DEFAULT_HIDDEN_W, LGLW_DEFAULT_HIDDEN_H, 0, CopyFromParent, InputOutput, + lglw->vi->visual, CWBorderPixel | CWColormap, &swa); - lglw_log("lglw:loc_create_hidden_window: 9\n"); + Dlog_v("lglw:loc_create_hidden_window: 9\n"); XSetStandardProperties(lglw->xdsp, lglw->hidden.xwnd, "LGLW_hidden", "LGLW_hidden", None, NULL, 0, NULL); XSync(lglw->xdsp, False); - lglw_log("lglw:loc_create_hidden_window: EXIT\n"); + Dlog_v("lglw:loc_create_hidden_window: EXIT\n"); lglw->hidden.size.x = _w; lglw->hidden.size.y = _h; @@ -358,20 +384,20 @@ static lglw_bool_t loc_create_hidden_window(lglw_int_t *lglw, int32_t _w, int32_ // ---------------------------------------------------------------------------- loc_destroy_hidden_window static void loc_destroy_hidden_window(lglw_int_t *lglw) { - lglw_log("lglw:loc_destroy_hidden_window: 1\n"); + Dlog_v("lglw:loc_destroy_hidden_window: 1\n"); if(NULL != lglw->xdsp && NULL != lglw->ctx) { glXMakeCurrent(lglw->xdsp, None, NULL); glXDestroyContext(lglw->xdsp, lglw->ctx); } - lglw_log("lglw:loc_destroy_hidden_window: 2\n"); + Dlog_v("lglw:loc_destroy_hidden_window: 2\n"); if(NULL != lglw->xdsp && 0 != lglw->hidden.xwnd) XDestroyWindow(lglw->xdsp, lglw->hidden.xwnd); - lglw_log("lglw:loc_destroy_hidden_window: 3\n"); + Dlog_v("lglw:loc_destroy_hidden_window: 3\n"); if(NULL != lglw->xdsp && 0 != lglw->cmap) XFreeColormap(lglw->xdsp, lglw->cmap); - lglw_log("lglw:loc_destroy_hidden_window: 4\n"); + Dlog_v("lglw:loc_destroy_hidden_window: 4\n"); if(NULL != lglw->vi) XFree(lglw->vi); - lglw_log("lglw:loc_destroy_hidden_window: 5\n"); + Dlog_v("lglw:loc_destroy_hidden_window: 5\n"); XSync(lglw->xdsp, False); if(NULL != lglw->xdsp) XCloseDisplay(lglw->xdsp); } @@ -388,7 +414,7 @@ static void loc_destroy_hidden_window(lglw_int_t *lglw) { // Very simple function to test _XEventProc is properly called static void loc_eventProc(XEvent *xev, lglw_int_t *lglw) { - Dlog_verbose("vstgltest: eventProc: type=%d serial=%lu send_event=%d lglw=%p\n", xev->xany.type, xev->xany.serial, xev->xany.send_event, lglw); + Dlog_vvv("lglw:loc_eventProc: type=%d serial=%lu send_event=%d lglw=%p\n", xev->xany.type, xev->xany.serial, xev->xany.send_event, lglw); loc_process_timer(lglw); @@ -399,12 +425,12 @@ static void loc_eventProc(XEvent *xev, lglw_int_t *lglw) { switch(xev->type) { default: - printf("vstgltest: unhandled X11 event type=%d\n", xev->type); + Dlog("lglw:loc_eventProc: unhandled X11 event type=%d\n", xev->type); eventHandled = LGLW_FALSE; break; case Expose: - Dlog_verbose("vstgltest: xev Expose\n"); + Dlog_v("lglw:loc_eventProc: xev Expose\n"); loc_handle_queued_mouse_warp(lglw); eventHandled = LGLW_FALSE; if(NULL != lglw->redraw.cbk) @@ -417,20 +443,20 @@ static void loc_eventProc(XEvent *xev, lglw_int_t *lglw) { // TODO: Should FocusIn/Out be treated like WM_CAPTURECHANGED and reset the grab state? case FocusIn: - Dlog_verbose("vstgltest: xev FocusIn\n"); + Dlog_v("lglw:loc_eventProc: xev FocusIn\n"); eventHandled = LGLW_FALSE; break; case FocusOut: - Dlog_verbose("vstgltest: xev FocusOut\n"); + Dlog_v("lglw:loc_eventProc: xev FocusOut\n"); eventHandled = LGLW_FALSE; break; case EnterNotify: - // printf("vstgltest: xev XEnterWindowEvent\n"); + // Dlog_v("lglw:loc_eventProc: xev XEnterWindowEvent\n"); ; // empty statement XEnterWindowEvent *wenter = (XEnterWindowEvent*)xev; - printf("vstgltest: xev EnterNotify: mode:%i, detail:%i, state:%d\n", wenter->mode, wenter->detail, wenter->state); + Dlog_v("lglw:loc_eventProc: xev EnterNotify: mode:%i, detail:%i, state:%d\n", wenter->mode, wenter->detail, wenter->state); lglw->mouse.p.x = wenter->x; lglw->mouse.p.y = wenter->y; loc_handle_mousemotion(lglw); @@ -447,10 +473,10 @@ static void loc_eventProc(XEvent *xev, lglw_int_t *lglw) { break; case LeaveNotify: - // printf("vstgltest: xev XLeaveWindowEvent\n"); + // Dlog_v("lglw:loc_eventProc: xev XLeaveWindowEvent\n"); ; // empty statement XLeaveWindowEvent *wexit = (XLeaveWindowEvent*)xev; - printf("vstgltest: xev LeaveNotify: mode:%i, detail:%i, state:%d\n", wexit->mode, wexit->detail, wexit->state); + Dlog_v("lglw:loc_eventProc: xev LeaveNotify: mode:%i, detail:%i, state:%d\n", wexit->mode, wexit->detail, wexit->state); // LeaveNotify messages can be pseudo-motion events (NotifyGrab, NotifyUngrab) // when buttons are pressed, which would trigger false focus changes @@ -464,7 +490,7 @@ static void loc_eventProc(XEvent *xev, lglw_int_t *lglw) { break; case MotionNotify: - // printf("vstgltest: xev MotionNotify\n"); + Dlog_v("lglw:loc_eventProc: xev MotionNotify\n"); ; // empty statement XMotionEvent *motion = (XMotionEvent*)xev; @@ -490,7 +516,7 @@ static void loc_eventProc(XEvent *xev, lglw_int_t *lglw) { break; case KeyPress: - printf("vstgltest: xev KeyPress\n"); + Dlog("lglw:loc_eventProc: xev KeyPress\n"); XKeyPressedEvent *keyPress = (XKeyPressedEvent*)xev; eventHandled = LGLW_FALSE; @@ -498,7 +524,7 @@ static void loc_eventProc(XEvent *xev, lglw_int_t *lglw) { switch(xkp) { default: - printf("vstgltest: xev KeyPress: %x or %lu\n", keyPress->keycode, xkp); + Dlog("lglw:loc_eventProc: xev KeyPress: %x or %lu\n", keyPress->keycode, xkp); if(0u != (lglw->keyboard.kmod_state & LGLW_KMOD_SHIFT)) { KeySym xkpl; @@ -513,7 +539,7 @@ static void loc_eventProc(XEvent *xev, lglw_int_t *lglw) { break; case NoSymbol: - printf("vstgltest: xev UNKNOWN KeyPress: %x\n", keyPress->keycode); + Dlog("lglw:loc_eventProc: xev UNKNOWN KeyPress: %x\n", keyPress->keycode); break; case XK_Left: @@ -640,7 +666,7 @@ static void loc_eventProc(XEvent *xev, lglw_int_t *lglw) { break; case KeyRelease: - printf("vstgltest: xev KeyRelease\n"); + Dlog("lglw:loc_eventProc: xev KeyRelease\n"); XKeyReleasedEvent *keyRelease = (XKeyReleasedEvent*)xev; eventHandled = LGLW_FALSE; @@ -648,7 +674,7 @@ static void loc_eventProc(XEvent *xev, lglw_int_t *lglw) { switch(xkr) { default: - printf("vstgltest: xev KeyRelease: %x or %lu\n", keyRelease->keycode, xkr); + Dlog("lglw:loc_eventProc: xev KeyRelease: %x or %lu\n", keyRelease->keycode, xkr); if(0u != (lglw->keyboard.kmod_state & LGLW_KMOD_SHIFT)) { KeySym xkrl; @@ -663,7 +689,7 @@ static void loc_eventProc(XEvent *xev, lglw_int_t *lglw) { break; case NoSymbol: - printf("vstgltest: xev UNKNOWN KeyRelease: %x\n", keyRelease->keycode); + Dlog("lglw:loc_eventProc: xev UNKNOWN KeyRelease: %x\n", keyRelease->keycode); break; case XK_Left: @@ -790,7 +816,7 @@ static void loc_eventProc(XEvent *xev, lglw_int_t *lglw) { break; case ButtonPress: - printf("vstgltest: xev ButtonPress\n"); + Dlog("lglw:loc_eventProc: xev ButtonPress\n"); XButtonPressedEvent *btnPress = (XButtonPressedEvent*)xev; lglw->mouse.p.x = btnPress->x; lglw->mouse.p.y = btnPress->y; @@ -803,7 +829,7 @@ static void loc_eventProc(XEvent *xev, lglw_int_t *lglw) { switch(btnPress->button) { default: - printf("vstgltest: xev ButtonPress unhandled button: %i\n", btnPress->button); + Dlog("lglw:loc_eventProc: xev ButtonPress unhandled button: %i\n", btnPress->button); eventHandled = LGLW_FALSE; break; case Button1: @@ -830,14 +856,14 @@ static void loc_eventProc(XEvent *xev, lglw_int_t *lglw) { break; case ButtonRelease: - printf("vstgltest: xev ButtonRelease\n"); + Dlog("lglw:loc_eventProc: xev ButtonRelease\n"); XButtonReleasedEvent *btnRelease = (XButtonReleasedEvent*)xev; lglw->mouse.p.x = btnRelease->x; lglw->mouse.p.y = btnRelease->y; switch(btnRelease->button) { default: - printf("vstgltest: xev ButtonRelease unhandled button: %i\n", btnRelease->button); + Dlog("lglw:loc_eventProc: xev ButtonRelease unhandled button: %i\n", btnRelease->button); eventHandled = LGLW_FALSE; break; case Button1: @@ -864,14 +890,14 @@ static void loc_eventProc(XEvent *xev, lglw_int_t *lglw) { break; case SelectionClear: - printf("vstgltest: xev SelectionClear\n"); + Dlog("lglw:loc_eventProc: xev SelectionClear\n"); lglw->clipboard.numChars = 0; free(lglw->clipboard.data); eventHandled = LGLW_TRUE; break; case SelectionRequest: - printf("vstgltest: xev SelectionRequest\n"); + Dlog("lglw:loc_eventProc: xev SelectionRequest\n"); XSelectionRequestEvent *cbReq = (XSelectionRequestEvent*)xev; XSelectionEvent cbRes; @@ -907,7 +933,7 @@ static void loc_eventProc(XEvent *xev, lglw_int_t *lglw) { { if(0 == lglw->parent_xwnd) { - printf("lglw_linux:loc_eventProc: no parent window to send events to"); + Dlog("lglw:loc_eventProc: no parent window to send events to"); XSendEvent(lglw->xdsp, InputFocus, True/*propgate*/, NoEventMask, xev); } else @@ -924,16 +950,18 @@ static void loc_eventProc(XEvent *xev, lglw_int_t *lglw) { static void loc_XEventProc(void *_xevent) { XEvent *xev = (XEvent*)_xevent; - Dlog_verbose("XEventProc\n"); - // printf("vstgltest: XEventProc, xev=%p\n", xev); + Dlog_vvv("lglw:loc_XEventProc: ENTER\n"); + // Dlog_vvv("lglw: XEventProc, xev=%p\n", xev); if(NULL != xev) { LGLW(loc_getProperty(xev->xany.display, xev->xany.window, "_lglw")); // get instance pointer - Dlog_verbose("lglw_linux:loc_XEventProc: xev=%p lglw=%p\n", xev, lglw); + Dlog_vvv("lglw:loc_XEventProc: xev=%p lglw=%p\n", xev, lglw); loc_eventProc(xev, lglw); } + + Dlog_vvv("lglw:loc_XEventProc: LEAVE\n"); } static void loc_setProperty(Display *_display, Window _window, const char *_name, void *_value) { @@ -944,7 +972,7 @@ static void loc_setProperty(Display *_display, Window _window, const char *_name temp[0] = (long)(data & 0xffffffffUL); temp[1] = (long)(data >> 32L); - printf("xxx lglw_linux:loc_setProperty: name=\"%s\" value=%p temp[0]=%08x temp[1]=%08x\n", _name, _value, (uint32_t)temp[0], (uint32_t)temp[1]); + Dlog_v("lglw:loc_setProperty: name=\"%s\" value=%p temp[0]=%08x temp[1]=%08x\n", _name, _value, (uint32_t)temp[0], (uint32_t)temp[1]); Atom atom = XInternAtom(_display, _name, False/*only_if_exists*/); @@ -988,54 +1016,45 @@ static void *loc_getProperty(Display *_display, Window _window, const char *_nam } uptr; uptr.any = 0; - // printf("xxx lglw_linux: loc_getProperty: LOWER userSize=%d userCount=%lu bytes=%lu data=%p\n", userSize, userCount, bytes, data); + Dlog_vvv("lglw:loc_getProperty: LOWER userSize=%d userCount=%lu bytes=%lu data=%p\n", userSize, userCount, bytes, data); if(NULL != data) { if(userCount >= 1) { - // if(userCount >= 2) - // { - // printf("xxx loc_getProperty: lo=0x%08x hi=0x%08x\n", ((uint32_t*)data)[0], ((uint32_t*)data)[1]); - // } - // lower 32-bit uptr.ui[0] = *(long*)data; uptr.ui[1] = 0; - // printf("xxx lower=0x%08x\n", uptr.ui[0]); - // // printf("xxx upper=0x%08x\n", uptr.ui[1]); + Dlog_vvv("lglw:loc_getProperty: lower=0x%08x\n", uptr.ui[0]); XFree(data); - // // if(userCount >= 2) + XGetWindowProperty(_display, + _window, + atom, + 1/*offset*/, + 1/*length*/, + False/*delete*/, + AnyPropertyType, + &userType/*actual_type_return*/, + &userSize/*actual_format_return*/, + &userCount/*nitems_return*/, + &bytes/*bytes_after_return / partial reads*/, + &data); + + Dlog_vvv("lglw:loc_getProperty: UPPER userSize=%d userCount=%lu bytes=%lu data=%p\n", userSize, userCount, bytes, data); + if(NULL != data) { - XGetWindowProperty(_display, - _window, - atom, - 1/*offset*/, - 1/*length*/, - False/*delete*/, - AnyPropertyType, - &userType/*actual_type_return*/, - &userSize/*actual_format_return*/, - &userCount/*nitems_return*/, - &bytes/*bytes_after_return / partial reads*/, - &data); - - // printf("xxx lglw_linux: loc_getProperty: UPPER userSize=%d userCount=%lu bytes=%lu data=%p\n", userSize, userCount, bytes, data); - if(NULL != data) - { - // upper 32-bit - uptr.ui[1] = *(long*)data; - // printf("xxx upper=0x%08x\n", uptr.ui[1]); - XFree(data); - } + // upper 32-bit + uptr.ui[1] = *(long*)data; + Dlog_vvv("lglw:loc_getProperty: upper=0x%08x\n", uptr.ui[1]); + XFree(data); } } } - // printf("xxx lglw_linux: loc_getProperty: return value=%p\n", uptr.any); + Dlog_vvv("lglw:loc_getProperty: return value=%p\n", uptr.any); return uptr.any; } @@ -1050,7 +1069,7 @@ static void loc_setEventProc (Display *display, Window window) { size_t data = (size_t)loc_eventProc; long temp[2]; - printf("vstgltest: setEventProc (2*32bit). window=%lu loc_eventProc=%p\n", window, &loc_eventProc); + Dlog("lglw: setEventProc (2*32bit). window=%lu loc_eventProc=%p\n", window, &loc_eventProc); // Split the 64 bit pointer into a little-endian unsigned int array temp[0] = (uint32_t)(data & 0xffffffffUL); @@ -1098,7 +1117,7 @@ static void loc_setEventProc (Display *display, Window window) { memcpy(ptr, kJumpInstructions, sizeof(kJumpInstructions)); *((uint64_t *)(ptr + kJumpAddress)) = (uint64_t)(&loc_XEventProc); msync(ptr, sizeof(kJumpInstructions), MS_INVALIDATE); - printf("vstgltest: 64bit trampoline installed\n"); + Dlog("lglw: 64bit trampoline installed\n"); } } @@ -1140,26 +1159,26 @@ lglw_bool_t lglw_window_open (lglw_t _lglw, void *_parentHWNDOrNull, int32_t _x, if(NULL != lglw) { - lglw_log("lglw:lglw_window_open: 1, %p, %i \n", (Window)_parentHWNDOrNull, (Window)_parentHWNDOrNull); + Dlog_v("lglw:lglw_window_open: 1, %p, %i \n", (Window)_parentHWNDOrNull, (Window)_parentHWNDOrNull); lglw->parent_xwnd = (0 == _parentHWNDOrNull) ? DefaultRootWindow(lglw->xdsp) : (Window)_parentHWNDOrNull; - lglw_log("lglw:lglw_window_open: 2 lglw=%p\n", lglw); + Dlog_v("lglw:lglw_window_open: 2 lglw=%p\n", lglw); if(_w <= 16) _w = lglw->hidden.size.x; - lglw_log("lglw:lglw_window_open: 3\n"); + Dlog_v("lglw:lglw_window_open: 3\n"); if(_h <= 16) _h = lglw->hidden.size.y; // TODO: compare to 'WindowClass' from Windows implementation - lglw_log("lglw:lglw_window_open: 4\n"); + Dlog_v("lglw:lglw_window_open: 4\n"); XSetWindowAttributes swa; // // XEvent event; XSync(lglw->xdsp, False); #if 1 - lglw_log("lglw:lglw_window_open: 5\n"); + Dlog_v("lglw:lglw_window_open: 5\n"); swa.border_pixel = 0; swa.colormap = lglw->cmap; // (note) [bsp] setting this to NoEventMask causes all events to be propagated to the parent (host) window. @@ -1179,7 +1198,7 @@ lglw_bool_t lglw_window_open (lglw_t _lglw, void *_parentHWNDOrNull, int32_t _x, &swa/*attributes*/ ); - lglw_log("lglw:lglw_window_open: 6\n"); + Dlog_v("lglw:lglw_window_open: 6\n"); XSetStandardProperties(lglw->xdsp/*display*/, lglw->win.xwnd/*window*/, "LGLW"/*window_name*/, @@ -1192,7 +1211,7 @@ lglw_bool_t lglw_window_open (lglw_t _lglw, void *_parentHWNDOrNull, int32_t _x, // Setup the event proc now, on the parent window as well just for the debug host // It was simpler to do this than check in the debug host for the reparent event - lglw_log("lglw:lglw_window_open: 7\n"); + Dlog_v("lglw:lglw_window_open: 7\n"); loc_setEventProc(lglw->xdsp, lglw->win.xwnd); loc_setProperty(lglw->xdsp, lglw->win.xwnd, "_lglw", (void*)lglw); // set instance pointer @@ -1209,7 +1228,7 @@ lglw_bool_t lglw_window_open (lglw_t _lglw, void *_parentHWNDOrNull, int32_t _x, // (note) [cameronleger] In Ardour's code-base, the only time it looks for the _XEventProc is during a ReparentNotify event if (0 != _parentHWNDOrNull) { - lglw_log("lglw:lglw_window_open: 8\n"); + Dlog_v("lglw:lglw_window_open: 8\n"); XReparentWindow(lglw->xdsp, lglw->win.xwnd, lglw->parent_xwnd, 0, 0); } #endif @@ -1219,7 +1238,7 @@ lglw_bool_t lglw_window_open (lglw_t _lglw, void *_parentHWNDOrNull, int32_t _x, lglw->win.b_owner = LGLW_FALSE; #endif - lglw_log("lglw:lglw_window_open: 9\n"); + Dlog_v("lglw:lglw_window_open: 9\n"); if(lglw->win.b_owner) { // // XMapRaised(lglw->xdsp, lglw->win.xwnd); @@ -1249,14 +1268,14 @@ lglw_bool_t lglw_window_open (lglw_t _lglw, void *_parentHWNDOrNull, int32_t _x, XSync(lglw->xdsp, False); lglw->win.mapped = LGLW_TRUE; - lglw_log("lglw:lglw_window_open: 10\n"); + Dlog_v("lglw:lglw_window_open: 10\n"); lglw->win.size.x = _w; lglw->win.size.y = _h; - lglw_log("lglw:lglw_window_open: 11\n"); + Dlog_v("lglw:lglw_window_open: 11\n"); loc_enable_dropfiles(lglw, (NULL != lglw->dropfiles.cbk)); - lglw_log("lglw:lglw_window_open: EXIT\n"); + Dlog_v("lglw:lglw_window_open: EXIT\n"); r = LGLW_TRUE; } @@ -1273,51 +1292,51 @@ lglw_bool_t lglw_window_resize (lglw_t _lglw, int32_t _w, int32_t _h) { { if(0 != lglw->win.xwnd) { - lglw_log("lglw:lglw_window_resize: 1\n"); + Dlog_v("lglw:lglw_window_resize: 1\n"); r = LGLW_TRUE; - lglw_log("lglw:lglw_window_resize: 2\n"); + Dlog_v("lglw:lglw_window_resize: 2\n"); XResizeWindow(lglw->xdsp, lglw->win.xwnd, _w, _h); XRaiseWindow(lglw->xdsp, lglw->win.xwnd); - lglw_log("lglw:lglw_window_resize: 3\n"); + Dlog_v("lglw:lglw_window_resize: 3\n"); int deltaW = _w - lglw->win.size.x; int deltaH = _h - lglw->win.size.y; - lglw_log("lglw:lglw_window_resize: 4\n"); + Dlog_v("lglw:lglw_window_resize: 4\n"); lglw->win.size.x = _w; lglw->win.size.y = _h; - lglw_log("lglw:lglw_window_resize: 5\n"); + Dlog_v("lglw:lglw_window_resize: 5\n"); Window root, parent, *children = NULL; unsigned int num_children; - lglw_log("lglw:lglw_window_resize: 6\n"); + Dlog_v("lglw:lglw_window_resize: 6\n"); if(!XQueryTree(lglw->xdsp, lglw->win.xwnd, &root, &parent, &children, &num_children)) return r; - lglw_log("lglw:lglw_window_resize: 7\n"); + Dlog_v("lglw:lglw_window_resize: 7\n"); if(children) XFree((char *)children); - lglw_log("lglw:lglw_window_resize: 8\n"); + Dlog_v("lglw:lglw_window_resize: 8\n"); // Resize parent window (if any) if(0 != parent) { - lglw_log("lglw:lglw_window_resize: 8.1\n"); + Dlog_v("lglw:lglw_window_resize: 8.1\n"); int x, y; unsigned int width, height; unsigned int border_width; unsigned int depth; - lglw_log("lglw:lglw_window_resize: 8.2\n"); + Dlog_v("lglw:lglw_window_resize: 8.2\n"); if(!XGetGeometry(lglw->xdsp, lglw->win.xwnd, &root, &x, &y, &width, &height, &border_width, &depth)) return r; - lglw_log("lglw:lglw_window_resize: 8.3\n"); + Dlog_v("lglw:lglw_window_resize: 8.3\n"); XResizeWindow(lglw->xdsp, parent, width + deltaW, height + deltaH); } - lglw_log("lglw:lglw_window_resize: EXIT\n"); + Dlog_v("lglw:lglw_window_resize: EXIT\n"); } } @@ -1333,13 +1352,13 @@ void lglw_window_close (lglw_t _lglw) { { if(0 != lglw->win.xwnd) { - lglw_log("lglw:lglw_window_close: 1\n"); + Dlog_v("lglw:lglw_window_close: 1\n"); lglw_timer_stop(_lglw); - lglw_log("lglw:lglw_window_close: 2\n"); + Dlog_v("lglw:lglw_window_close: 2\n"); glXMakeCurrent(lglw->xdsp, None, NULL); - lglw_log("lglw:lglw_window_close: 3\n"); + Dlog_v("lglw:lglw_window_close: 3\n"); if(lglw->win.b_owner) { XDestroyWindow(lglw->xdsp, lglw->win.xwnd); @@ -1350,7 +1369,7 @@ void lglw_window_close (lglw_t _lglw) { lglw->win.mapped = LGLW_FALSE; } } - lglw_log("lglw:lglw_window_close: EXIT\n"); + Dlog_v("lglw:lglw_window_close: EXIT\n"); } @@ -1360,12 +1379,12 @@ void lglw_window_show(lglw_t _lglw) { if(NULL != lglw) { - lglw_log("lglw:lglw_window_show: 1\n"); + Dlog_v("lglw:lglw_window_show: 1\n"); XMapRaised(lglw->xdsp, lglw->win.xwnd); lglw->win.mapped = LGLW_TRUE; } - lglw_log("lglw:lglw_window_show: EXIT\n"); + Dlog_v("lglw:lglw_window_show: EXIT\n"); } @@ -1375,12 +1394,12 @@ void lglw_window_hide(lglw_t _lglw) { if(NULL != lglw) { - lglw_log("lglw:lglw_window_hide: 1\n"); + Dlog_v("lglw:lglw_window_hide: 1\n"); XUnmapWindow(lglw->xdsp, lglw->win.xwnd); lglw->win.mapped = LGLW_FALSE; } - lglw_log("lglw:lglw_window_hide: EXIT\n"); + Dlog_v("lglw:lglw_window_hide: EXIT\n"); } @@ -1389,14 +1408,14 @@ lglw_bool_t lglw_window_is_visible(lglw_t _lglw) { lglw_bool_t r = LGLW_FALSE; LGLW(_lglw); - // lglw_log("lglw:lglw_window_is_visible: 1\n"); + Dlog_vvv("lglw:lglw_window_is_visible: 1\n"); if(NULL != lglw && 0 != lglw->win.xwnd) { - // lglw_log("lglw:lglw_window_is_visible: 2\n"); + Dlog_vvv("lglw:lglw_window_is_visible: 2\n"); r = lglw->win.mapped; } - // lglw_log("lglw:lglw_window_is_visible: EXIT\n"); + Dlog_vvv("lglw:lglw_window_is_visible: EXIT\n"); return r; } @@ -1405,7 +1424,7 @@ lglw_bool_t lglw_window_is_visible(lglw_t _lglw) { void lglw_window_size_get(lglw_t _lglw, int32_t *_retX, int32_t *_retY) { LGLW(_lglw); - Dlog_verbose("lglw:lglw_window_size_get: 1\n"); + Dlog_vvv("lglw:lglw_window_size_get: 1\n"); if(NULL != lglw) { if(0 != lglw->win.xwnd) @@ -1417,7 +1436,7 @@ void lglw_window_size_get(lglw_t _lglw, int32_t *_retX, int32_t *_retY) { *_retY = lglw->win.size.y; } } - Dlog_verbose("lglw:lglw_window_size_get: EXIT\n"); + Dlog_vvv("lglw:lglw_window_size_get: EXIT\n"); } @@ -1432,7 +1451,7 @@ void lglw_redraw(lglw_t _lglw) { if(0 != lglw->win.xwnd) { // TODO Event Loop - Dlog_verbose("lglw:lglw_redraw: 1\n"); + Dlog_vvv("lglw:lglw_redraw: 1\n"); XEvent xev; xev.xany.type = Expose; xev.xany.serial = 0; @@ -1475,11 +1494,11 @@ void lglw_glcontext_push(lglw_t _lglw) { lglw->prev.drw = glXGetCurrentDrawable(); lglw->prev.ctx = glXGetCurrentContext(); - // lglw_log("lglw:lglw_glcontext_push: win.xwnd=%p hidden.xwnd=%p ctx=%p\n", - // lglw->win.xwnd, lglw->hidden.xwnd, lglw->ctx); + Dlog_vvv("lglw:lglw_glcontext_push: win.xwnd=%p hidden.xwnd=%p ctx=%p\n", + lglw->win.xwnd, lglw->hidden.xwnd, lglw->ctx); if(!glXMakeCurrent(lglw->xdsp, (0 == lglw->win.xwnd) ? lglw->hidden.xwnd : lglw->win.xwnd, lglw->ctx)) { - lglw_log("[---] lglw_glcontext_push: glXMakeCurrent() failed. win.xwnd=%p hidden.xwnd=%p ctx=%p glGetError()=%d\n", lglw->win.xwnd, lglw->hidden.xwnd, lglw->ctx, glGetError()); + Dlog("[---] lglw_glcontext_push: glXMakeCurrent() failed. win.xwnd=%p hidden.xwnd=%p ctx=%p glGetError()=%d\n", lglw->win.xwnd, lglw->hidden.xwnd, lglw->ctx, glGetError()); } } } @@ -1491,11 +1510,11 @@ void lglw_glcontext_pop(lglw_t _lglw) { if(NULL != lglw) { - // lglw_log("lglw:lglw_glcontext_pop: prev.drw=%p prev.ctx=%p\n", - // lglw->prev.drw, lglw->prev.ctx); + Dlog_vvv("lglw:lglw_glcontext_pop: prev.drw=%p prev.ctx=%p\n", + lglw->prev.drw, lglw->prev.ctx); if(!glXMakeCurrent(lglw->xdsp, lglw->prev.drw, lglw->prev.ctx)) { - lglw_log("[---] lglw_glcontext_pop: glXMakeCurrent() failed. prev.drw=%p ctx=%p glGetError()=%d\n", lglw->prev.drw, lglw->prev.ctx, glGetError()); + Dlog("[---] lglw_glcontext_pop: glXMakeCurrent() failed. prev.drw=%p ctx=%p glGetError()=%d\n", lglw->prev.drw, lglw->prev.ctx, glGetError()); } } } @@ -1509,7 +1528,7 @@ void lglw_swap_buffers(lglw_t _lglw) { { if(0 != lglw->win.xwnd) { - // lglw_log("lglw:lglw_swap_buffers: 1\n"); + Dlog_vv("lglw:lglw_swap_buffers: 1\n"); glXSwapBuffers(lglw->xdsp, lglw->win.xwnd); } } @@ -1525,12 +1544,12 @@ void lglw_swap_interval_set(lglw_t _lglw, int32_t _ival) { { if(0 != lglw->win.xwnd) { - lglw_log("lglw:lglw_swap_interval_set: 1\n"); + Dlog_vv("lglw:lglw_swap_interval_set: 1\n"); PFNWGLEXTSWAPINTERVALPROC glXSwapIntervalEXT; glXSwapIntervalEXT = (PFNWGLEXTSWAPINTERVALPROC) glXGetProcAddress((const GLubyte*)"glXSwapIntervalEXT"); if(NULL != glXSwapIntervalEXT) { - lglw_log("lglw:lglw_swap_interval_set: 2\n"); + Dlog_vv("lglw:lglw_swap_interval_set: 2\n"); glXSwapIntervalEXT(lglw->xdsp, lglw->win.xwnd, _ival); lglw->win.swap_interval = _ival; } @@ -1562,7 +1581,7 @@ static void loc_handle_mouseleave(lglw_int_t *lglw) { lglw->focus.cbk(lglw, lglw->focus.state, LGLW_FOCUS_MOUSE); } - lglw_log("xxx lglw:loc_handle_mouseleave: LEAVE\n"); + Dlog_vv("xxx lglw:loc_handle_mouseleave: LEAVE\n"); } @@ -1576,7 +1595,7 @@ static void loc_handle_mouseenter(lglw_int_t *lglw) { lglw->focus.cbk(lglw, lglw->focus.state, LGLW_FOCUS_MOUSE); } - lglw_log("xxx lglw:loc_handle_mouseenter: LEAVE\n"); + Dlog_vv("xxx lglw:loc_handle_mouseenter: LEAVE\n"); } @@ -1724,7 +1743,7 @@ void lglw_mouse_grab(lglw_t _lglw, uint32_t _grabMode) { CurrentTime/*time*/); if(GrabSuccess != result) { - printf("vstgltest: Grab Result: %i\n", result); + Dlog("lglw: Grab Result: %i\n", result); } else { @@ -1743,7 +1762,7 @@ void lglw_mouse_grab(lglw_t _lglw, uint32_t _grabMode) { CurrentTime/*time*/); if(GrabSuccess != result) { - printf("vstgltest: Grab Result: %i\n", result); + Dlog("lglw: Grab Result: %i\n", result); } else { @@ -1865,7 +1884,7 @@ void lglw_timer_start(lglw_t _lglw, uint32_t _millisec) { if(NULL != lglw) { - lglw_log("xxx lglw_linux:lglw_timer_start: interval=%u\n", _millisec); + Dlog_v("lglw:lglw_timer_start: interval=%u\n", _millisec); lglw->timer.interval_ms = _millisec; lglw->timer.b_running = LGLW_TRUE; } @@ -1878,7 +1897,7 @@ void lglw_timer_stop(lglw_t _lglw) { if(NULL != lglw) { - lglw_log("xxx lglw_linux:lglw_timer_stop\n"); + Dlog_v("lglw:lglw_timer_stop\n"); lglw->timer.b_running = LGLW_FALSE; } } @@ -1907,6 +1926,7 @@ static void loc_process_timer(lglw_int_t *lglw) { if(NULL != lglw->timer.cbk) { + Dlog_vvv("lglw: invoke timer callback\n"); lglw->timer.cbk(lglw); } } @@ -1985,7 +2005,7 @@ void lglw_clipboard_text_set(lglw_t _lglw, const uint32_t _numChars, const char } lglw->clipboard.data[numChars - 1] = 0; - printf("xxx lglw_clipboard_text_set(%i): %s\n", lglw->clipboard.numChars, lglw->clipboard.data); + Dlog("xxx lglw_clipboard_text_set(%i): %s\n", lglw->clipboard.numChars, lglw->clipboard.data); Atom clipboard = XInternAtom(lglw->xdsp, "CLIPBOARD", False); XSetSelectionOwner(lglw->xdsp, clipboard, lglw->win.xwnd, CurrentTime); @@ -2029,13 +2049,13 @@ void lglw_clipboard_text_get(lglw_t _lglw, uint32_t _maxChars, uint32_t *_retNum owner = XGetSelectionOwner(lglw->xdsp, clipboard); if(owner == None) { - printf("xxx lglw_clipboard_text_get: No Window can provide a clipboard result\n"); + Dlog("xxx lglw_clipboard_text_get: No Window can provide a clipboard result\n"); return; } if(owner == lglw->win.xwnd) { - printf("xxx lglw_clipboard_text_get: We are the owner of the clipboard, skip X interactions\n"); + Dlog("xxx lglw_clipboard_text_get: We are the owner of the clipboard, skip X interactions\n"); uint32_t i = 0u; for(; i < _maxChars; i++) @@ -2049,7 +2069,7 @@ void lglw_clipboard_text_get(lglw_t _lglw, uint32_t _maxChars, uint32_t *_retNum if(NULL != _retNumChars) *_retNumChars = i; - printf("xxx lglw_clipboard_text_get: (result on next line)\n%s\n", _retText); + Dlog("xxx lglw_clipboard_text_get: (result on next line)\n%s\n", _retText); return; } @@ -2059,7 +2079,7 @@ void lglw_clipboard_text_get(lglw_t _lglw, uint32_t _maxChars, uint32_t *_retNum cbReq = (XSelectionEvent*)&xev; if(None == cbReq->property) { - printf("xxx lglw_clipboard_text_get: Clipboard was not converted to UTF-8 string\n"); + Dlog("xxx lglw_clipboard_text_get: Clipboard was not converted to UTF-8 string\n"); return; } @@ -2082,13 +2102,13 @@ void lglw_clipboard_text_get(lglw_t _lglw, uint32_t _maxChars, uint32_t *_retNum if(utf8 != returnType) { - printf("xxx lglw_clipboard_text_get: Clipboard result is not a UTF-8 string\n"); + Dlog("xxx lglw_clipboard_text_get: Clipboard result is not a UTF-8 string\n"); return; } if(8u != returnFormat) { - printf("xxx lglw_clipboard_text_get: Clipboard format is not a char array\n"); + Dlog("xxx lglw_clipboard_text_get: Clipboard format is not a char array\n"); return; } @@ -2110,7 +2130,7 @@ void lglw_clipboard_text_get(lglw_t _lglw, uint32_t _maxChars, uint32_t *_retNum if(returnSize == 0) { - printf("xxx lglw_clipboard_text_get: No Clipboard result after final request\n"); + Dlog("xxx lglw_clipboard_text_get: No Clipboard result after final request\n"); return; } @@ -2126,7 +2146,7 @@ void lglw_clipboard_text_get(lglw_t _lglw, uint32_t _maxChars, uint32_t *_retNum if(NULL != _retNumChars) *_retNumChars = i; - printf("xxx lglw_clipboard_text_get: (result on next line)\n%s\n", _retText); + Dlog("xxx lglw_clipboard_text_get: (result on next line)\n%s\n", _retText); XFree(propertyValue); } } @@ -2146,14 +2166,14 @@ void lglw_events(lglw_t _lglw) { int numEv = XEventsQueued(lglw->xdsp, QueuedAfterReading); // => numEv is always 0 int evIdx = 0; - printf("xxx lglw_events: numEv=%d\n", numEv); + Dlog_v("xxx lglw_events: numEv=%d\n", numEv); //for(; evIdx < numEv; evIdx++) for(;;) { XEvent xev; XNextEvent(lglw->xdsp, &xev); - printf("xxx lglw_events: XNextEvent[%d]\n", evIdx++); + Dlog_v("xxx lglw_events: XNextEvent[%d]\n", evIdx++); loc_eventProc(&xev, lglw); } #else @@ -2163,7 +2183,7 @@ void lglw_events(lglw_t _lglw) { // // XEvent xev; // // // => blocks forever // // XNextEvent(lglw->xdsp, &xev); - // // printf("xxx XNextEvent[%d]\n", evIdx++); + // // Dlog_v("xxx XNextEvent[%d]\n", evIdx++); // // } loc_process_timer(lglw);