finished switching over linux logging

This commit is contained in:
Allen Webster 2017-07-03 11:59:39 -04:00
parent 9491068bfe
commit b8107e74df
2 changed files with 149 additions and 152 deletions

View File

@ -105,7 +105,7 @@ open_all_files_with_extension_internal(Application_Links *app, String dir, char
for (uint32_t i = 0; i < list.count; ++i){ for (uint32_t i = 0; i < list.count; ++i){
File_Info *info = list.infos + i; File_Info *info = list.infos + i;
if (info->folder){ if (info->folder){
if (recursive){ if (recursive && info->filename[0] != '.'){
dir.size = dir_size; dir.size = dir_size;
append(&dir, info->filename); append(&dir, info->filename);
append(&dir, "/"); append(&dir, "/");

View File

@ -399,7 +399,7 @@ Sys_CLI_Call_Sig(system_cli_call){
if (chdir(path) == -1){ if (chdir(path) == -1){
perror("system_cli_call: chdir"); perror("system_cli_call: chdir");
exit(1); exit(1);
}; }
char* argv[] = { "sh", "-c", script_name, NULL }; char* argv[] = { "sh", "-c", script_name, NULL };
@ -852,7 +852,7 @@ LinuxLoadAppCode(String* base_dir){
get_funcs = (App_Get_Functions*) get_funcs = (App_Get_Functions*)
dlsym(linuxvars.app_code, "app_get_functions"); dlsym(linuxvars.app_code, "app_get_functions");
} else { } else {
fprintf(stderr, "dlopen failed: %s\n", dlerror()); LOGF("dlopen failed: %s\n", dlerror());
} }
if (get_funcs){ if (get_funcs){
@ -979,7 +979,7 @@ GLsizei length,
const GLchar* message, const GLchar* message,
const void* userParam const void* userParam
){ ){
fprintf(stderr, "GL DEBUG: %s\n", message); LOGF("GL DEBUG: %s\n", message);
} }
#endif #endif
@ -1008,7 +1008,7 @@ InitializeOpenGLContext(Display *XDisplay, Window XWindow, GLXFBConfig &bestFbc,
if (!glXCreateContextAttribsARB) if (!glXCreateContextAttribsARB)
{ {
fprintf(stderr, "glXCreateContextAttribsARB() not found, using old-style GLX context\n" ); LOG("glXCreateContextAttribsARB() not found, using old-style GLX context\n" );
ctx = glXCreateNewContext( XDisplay, bestFbc, GLX_RGBA_TYPE, 0, True ); ctx = glXCreateNewContext( XDisplay, bestFbc, GLX_RGBA_TYPE, 0, True );
} }
else else
@ -1024,13 +1024,13 @@ InitializeOpenGLContext(Display *XDisplay, Window XWindow, GLXFBConfig &bestFbc,
None None
}; };
fprintf(stderr, "Creating GL 4.3 context...\n"); LOG("Creating GL 4.3 context...\n");
ctx = glXCreateContextAttribsARB(XDisplay, bestFbc, 0, True, context_attribs); ctx = glXCreateContextAttribsARB(XDisplay, bestFbc, 0, True, context_attribs);
XSync( XDisplay, False ); XSync( XDisplay, False );
if (!ctxErrorOccurred && ctx) if (!ctxErrorOccurred && ctx)
{ {
fprintf(stderr, "Created GL 4.3 context.\n" ); LOG("Created GL 4.3 context.\n" );
} }
else else
{ {
@ -1039,14 +1039,14 @@ InitializeOpenGLContext(Display *XDisplay, Window XWindow, GLXFBConfig &bestFbc,
context_attribs[1] = 3; context_attribs[1] = 3;
context_attribs[3] = 2; context_attribs[3] = 2;
fprintf(stderr, "GL 4.3 unavailable, creating GL 3.2 context...\n" ); LOG("GL 4.3 unavailable, creating GL 3.2 context...\n" );
ctx = glXCreateContextAttribsARB( XDisplay, bestFbc, 0, True, context_attribs ); ctx = glXCreateContextAttribsARB( XDisplay, bestFbc, 0, True, context_attribs );
XSync(XDisplay, False); XSync(XDisplay, False);
if (!ctxErrorOccurred && ctx) if (!ctxErrorOccurred && ctx)
{ {
fprintf(stderr, "Created GL 3.2 context.\n" ); LOG("Created GL 3.2 context.\n" );
} }
else else
{ {
@ -1055,7 +1055,7 @@ InitializeOpenGLContext(Display *XDisplay, Window XWindow, GLXFBConfig &bestFbc,
ctxErrorOccurred = false; ctxErrorOccurred = false;
fprintf(stderr, "Failed to create GL 3.2 context, using old-style GLX context\n"); LOG("Failed to create GL 3.2 context, using old-style GLX context\n");
ctx = glXCreateContextAttribsARB(XDisplay, bestFbc, 0, True, context_attribs); ctx = glXCreateContextAttribsARB(XDisplay, bestFbc, 0, True, context_attribs);
IsLegacy = true; IsLegacy = true;
@ -1066,25 +1066,23 @@ InitializeOpenGLContext(Display *XDisplay, Window XWindow, GLXFBConfig &bestFbc,
XSync(XDisplay, False); XSync(XDisplay, False);
XSetErrorHandler(oldHandler); XSetErrorHandler(oldHandler);
if (ctxErrorOccurred || !ctx) if (ctxErrorOccurred || !ctx){
{ LOG("Failed to create an OpenGL context\n");
fprintf(stderr, "Failed to create an OpenGL context\n");
exit(1); exit(1);
} }
b32 Direct; b32 Direct;
if (!glXIsDirect(XDisplay, ctx)) if (!glXIsDirect(XDisplay, ctx))
{ {
fprintf(stderr, "Indirect GLX rendering context obtained\n"); LOG("Indirect GLX rendering context obtained\n");
Direct = 0; Direct = false;
} }
else else{
{ LOG("Direct GLX rendering context obtained\n");
fprintf(stderr, "Direct GLX rendering context obtained\n"); Direct = true;
Direct = 1;
} }
fprintf(stderr, "Making context current\n"); LOG("Making context current\n");
glXMakeCurrent( XDisplay, XWindow, ctx ); glXMakeCurrent( XDisplay, XWindow, ctx );
char *Vendor = (char *)glGetString(GL_VENDOR); char *Vendor = (char *)glGetString(GL_VENDOR);
@ -1094,14 +1092,12 @@ InitializeOpenGLContext(Display *XDisplay, Window XWindow, GLXFBConfig &bestFbc,
//TODO(inso): glGetStringi is required in core profile if the GL version is >= 3.0 //TODO(inso): glGetStringi is required in core profile if the GL version is >= 3.0
char *Extensions = (char *)glGetString(GL_EXTENSIONS); char *Extensions = (char *)glGetString(GL_EXTENSIONS);
fprintf(stderr, "GL_VENDOR: %s\n", Vendor); LOGF("GL_VENDOR: %s\n", Vendor);
fprintf(stderr, "GL_RENDERER: %s\n", Renderer); LOGF("GL_RENDERER: %s\n", Renderer);
fprintf(stderr, "GL_VERSION: %s\n", Version); LOGF("GL_VERSION: %s\n", Version);
// fprintf(stderr, "GL_EXTENSIONS: %s\n", Extensions);
//NOTE(inso): enable vsync if available. this should probably be optional //NOTE(inso): enable vsync if available. this should probably be optional
if (Direct && strstr(glxExts, "GLX_EXT_swap_control ")){ if (Direct && strstr(glxExts, "GLX_EXT_swap_control ")){
GLXLOAD(glXSwapIntervalEXT); GLXLOAD(glXSwapIntervalEXT);
if (glXSwapIntervalEXT){ if (glXSwapIntervalEXT){
@ -1111,10 +1107,11 @@ InitializeOpenGLContext(Display *XDisplay, Window XWindow, GLXFBConfig &bestFbc,
glXQueryDrawable(XDisplay, XWindow, GLX_SWAP_INTERVAL_EXT, &swap_val); glXQueryDrawable(XDisplay, XWindow, GLX_SWAP_INTERVAL_EXT, &swap_val);
linuxvars.vsync = swap_val == 1; linuxvars.vsync = swap_val == 1;
fprintf(stderr, "VSync enabled? %s.\n", linuxvars.vsync ? "Yes" : "No"); LOGF("VSync enabled? %s.\n", linuxvars.vsync ? "Yes" : "No");
} }
} else if(Direct && strstr(glxExts, "GLX_MESA_swap_control ")){ }
else if (Direct && strstr(glxExts, "GLX_MESA_swap_control ")){
GLXLOAD(glXSwapIntervalMESA); GLXLOAD(glXSwapIntervalMESA);
GLXLOAD(glXGetSwapIntervalMESA); GLXLOAD(glXGetSwapIntervalMESA);
@ -1124,15 +1121,16 @@ InitializeOpenGLContext(Display *XDisplay, Window XWindow, GLXFBConfig &bestFbc,
if (glXGetSwapIntervalMESA){ if (glXGetSwapIntervalMESA){
linuxvars.vsync = glXGetSwapIntervalMESA(); linuxvars.vsync = glXGetSwapIntervalMESA();
fprintf(stderr, "VSync enabled? %s (MESA)\n", linuxvars.vsync ? "Yes" : "No"); LOGF("VSync enabled? %s (MESA)\n", linuxvars.vsync ? "Yes" : "No");
} else { } else {
// NOTE(inso): assume it worked? // NOTE(inso): assume it worked?
linuxvars.vsync = 1; linuxvars.vsync = 1;
fputs("VSync enabled? possibly (MESA)\n", stderr); LOG("VSync enabled? possibly (MESA)\n");
} }
} }
} else if(Direct && strstr(glxExts, "GLX_SGI_swap_control ")){ }
else if (Direct && strstr(glxExts, "GLX_SGI_swap_control ")){
GLXLOAD(glXSwapIntervalSGI); GLXLOAD(glXSwapIntervalSGI);
@ -1141,11 +1139,12 @@ InitializeOpenGLContext(Display *XDisplay, Window XWindow, GLXFBConfig &bestFbc,
//NOTE(inso): The SGI one doesn't seem to have a way to confirm we got it... //NOTE(inso): The SGI one doesn't seem to have a way to confirm we got it...
linuxvars.vsync = 1; linuxvars.vsync = 1;
fputs("VSync enabled? hopefully (SGI)\n", stderr); LOG("VSync enabled? hopefully (SGI)\n");
} }
} else { }
fputs("VSync enabled? nope, no suitable extension\n", stderr); else{
LOG("VSync enabled? nope, no suitable extension\n");
} }
#if FRED_INTERNAL #if FRED_INTERNAL
@ -1154,7 +1153,7 @@ InitializeOpenGLContext(Display *XDisplay, Window XWindow, GLXFBConfig &bestFbc,
GLXLOAD(glDebugMessageCallback); GLXLOAD(glDebugMessageCallback);
if (glDebugMessageCallback){ if (glDebugMessageCallback){
fputs("Enabling GL Debug Callback\n", stderr); LOG("Enabling GL Debug Callback\n");
glDebugMessageCallback(&LinuxGLDebugCallback, 0); glDebugMessageCallback(&LinuxGLDebugCallback, 0);
glEnable(GL_DEBUG_OUTPUT); glEnable(GL_DEBUG_OUTPUT);
} }
@ -1178,10 +1177,10 @@ GLXCanUseFBConfig(Display *XDisplay)
int GLXMajor, GLXMinor; int GLXMajor, GLXMinor;
char *XVendor = ServerVendor(XDisplay); char *XVendor = ServerVendor(XDisplay);
fprintf(stderr, "XWindows vendor: %s\n", XVendor); LOGF("XWindows vendor: %s\n", XVendor);
if (glXQueryVersion(XDisplay, &GLXMajor, &GLXMinor)) if (glXQueryVersion(XDisplay, &GLXMajor, &GLXMinor))
{ {
fprintf(stderr, "GLX version %d.%d\n", GLXMajor, GLXMinor); LOGF("GLX version %d.%d\n", GLXMajor, GLXMinor);
if (((GLXMajor == 1 ) && (GLXMinor >= 3)) || (GLXMajor > 1)) if (((GLXMajor == 1 ) && (GLXMinor >= 3)) || (GLXMajor > 1))
{ {
Result = true; Result = true;
@ -1236,7 +1235,7 @@ ChooseGLXConfig(Display *XDisplay, int XScreenIndex)
int id = 0; int id = 0;
glXGetFBConfigAttrib(XDisplay, Result.BestConfig, GLX_FBCONFIG_ID, &id); glXGetFBConfigAttrib(XDisplay, Result.BestConfig, GLX_FBCONFIG_ID, &id);
fprintf(stderr, "Using FBConfig: %d (0x%x)\n", id, id); LOGF("Using FBConfig: %d (0x%x)\n", id, id);
XFree(VI); XFree(VI);
} }
@ -1268,12 +1267,12 @@ LinuxInputInit(Display *dpy, Window XWindow){
setlocale(LC_ALL, ""); setlocale(LC_ALL, "");
XSetLocaleModifiers(""); XSetLocaleModifiers("");
b32 locale_supported = XSupportsLocale(); b32 locale_supported = XSupportsLocale();
fprintf(stderr, "Supported locale?: %s.\n", locale_supported ? "Yes" : "No"); LOGF("Supported locale?: %s.\n", locale_supported ? "Yes" : "No");
if (!locale_supported){ if (!locale_supported){
fprintf(stderr, "Reverting to 'C' ... "); LOG("Reverting to 'C' ... ");
setlocale(LC_ALL, "C"); setlocale(LC_ALL, "C");
locale_supported = XSupportsLocale(); locale_supported = XSupportsLocale();
fprintf(stderr, "C is supported? %s.\n", locale_supported ? "Yes" : "No"); LOGF("C is supported? %s.\n", locale_supported ? "Yes" : "No");
} }
result.input_method = XOpenIM(dpy, 0, 0, 0); result.input_method = XOpenIM(dpy, 0, 0, 0);
@ -1307,13 +1306,13 @@ LinuxInputInit(Display *dpy, Window XWindow){
} }
else{ else{
result = null_init_input_result; result = null_init_input_result;
fputs("Could not get minimum required input style.\n", stderr); LOG("Could not get minimum required input style.\n");
exit(1); exit(1);
} }
} }
else{ else{
result = null_init_input_result; result = null_init_input_result;
fprintf(stderr, "Could not open X Input Method.\n"); LOG("Could not open X Input Method.\n");
exit(1); exit(1);
} }
@ -1543,7 +1542,7 @@ LinuxX11ConnectionWatch(Display* dpy, XPointer cdata, int fd, Bool opening, XPoi
internal void internal void
LinuxFatalErrorMsg(const char* msg) LinuxFatalErrorMsg(const char* msg)
{ {
fprintf(stderr, "Fatal Error: %s\n", msg); LOGF("Fatal Error: %s\n", msg);
Display *dpy = XOpenDisplay(0); Display *dpy = XOpenDisplay(0);
if (!dpy){ if (!dpy){
@ -1748,8 +1747,8 @@ LinuxGetXSettingsDPI(Display* dpy, int screen)
Atom XSET_SET = XInternAtom(dpy, "_XSETTINGS_SETTINGS", True); Atom XSET_SET = XInternAtom(dpy, "_XSETTINGS_SETTINGS", True);
if (XSET_SEL == None || XSET_SET == None){ if (XSET_SEL == None || XSET_SET == None){
fputs("XSETTINGS unavailable.\n", stderr); LOG("XSETTINGS unavailable.\n");
return dpi; return(dpi);
} }
Window xset_win = XGetSelectionOwner(dpy, XSET_SEL); Window xset_win = XGetSelectionOwner(dpy, XSET_SEL);
@ -1765,12 +1764,12 @@ LinuxGetXSettingsDPI(Display* dpy, int screen)
unsigned long pad, num; unsigned long pad, num;
if (XGetWindowProperty(dpy, xset_win, XSET_SET, 0, 1024, False, XSET_SET, &type, &fmt, &num, &pad, &prop) != Success){ if (XGetWindowProperty(dpy, xset_win, XSET_SET, 0, 1024, False, XSET_SET, &type, &fmt, &num, &pad, &prop) != Success){
fputs("XSETTINGS: GetWindowProperty failed.\n", stderr); LOG("XSETTINGS: GetWindowProperty failed.\n");
goto out; goto out;
} }
if (fmt != 8){ if (fmt != 8){
fputs("XSETTINGS: Wrong format.\n", stderr); LOG("XSETTINGS: Wrong format.\n");
goto out; goto out;
} }
} }
@ -1779,16 +1778,13 @@ LinuxGetXSettingsDPI(Display* dpy, int screen)
p = (char*)(xs + 1); p = (char*)(xs + 1);
if (xs->byte_order != 0){ if (xs->byte_order != 0){
fputs("FIXME: XSETTINGS not host byte order?\n", stderr); LOG("FIXME: XSETTINGS not host byte order?\n");
goto out; goto out;
} }
for (int i = 0; i < xs->num_settings; ++i){ for (int i = 0; i < xs->num_settings; ++i){
struct XSettingHeader* h = (struct XSettingHeader*)p; struct XSettingHeader* h = (struct XSettingHeader*)p;
// const char* strs[] = { "Int", "String", "Color" };
// printf("%s:\t\"%.*s\"\n", strs[h->type], h->name_len, h->name);
p += sizeof(struct XSettingHeader); p += sizeof(struct XSettingHeader);
p += h->name_len; p += h->name_len;
p += ((4 - (h->name_len & 3)) & 3); p += ((4 - (h->name_len & 3)) & 3);
@ -1815,7 +1811,7 @@ LinuxGetXSettingsDPI(Display* dpy, int screen)
} break; } break;
default: { default: {
fputs("XSETTINGS: Got invalid type...\n", stderr); LOG("XSETTINGS: Got invalid type...\n");
goto out; goto out;
} break; } break;
} }
@ -2020,7 +2016,7 @@ LinuxHandleX11Events(void)
//TODO(inso): handle properly //TODO(inso): handle properly
Xutf8ResetIC(linuxvars.input_context); Xutf8ResetIC(linuxvars.input_context);
XSetICFocus(linuxvars.input_context); XSetICFocus(linuxvars.input_context);
fputs("FIXME: XBufferOverflow from LookupString.\n", stderr); LOG("FIXME: XBufferOverflow from LookupString.\n");
} }
u32 key = utf8_to_u32_unchecked(buff); u32 key = utf8_to_u32_unchecked(buff);
@ -2343,8 +2339,7 @@ main(int argc, char **argv){
output_size = linuxvars.app.read_command_line(&linuxvars.system, &memory_vars, current_directory, &linuxvars.settings, &files, &file_count, clparams); output_size = linuxvars.app.read_command_line(&linuxvars.system, &memory_vars, current_directory, &linuxvars.settings, &files, &file_count, clparams);
if (output_size > 0){ if (output_size > 0){
// TODO(allen): crt free version LOGF("%.*s", output_size, (char*)memory_vars.target_memory);
fprintf(stdout, "%.*s", output_size, (char*)memory_vars.target_memory);
} }
if (output_size != 0){ if (output_size != 0){
LinuxFatalErrorMsg("Error reading command-line arguments."); LinuxFatalErrorMsg("Error reading command-line arguments.");
@ -2399,7 +2394,7 @@ main(int argc, char **argv){
exit(1); exit(1);
} }
else{ else{
fprintf(stderr, "Successfully loaded custom_4coder.so\n"); LOG("Successfully loaded custom_4coder.so\n");
} }
} }
} else { } else {
@ -2472,8 +2467,8 @@ main(int argc, char **argv){
linuxvars.XDisplay = XOpenDisplay(0); linuxvars.XDisplay = XOpenDisplay(0);
if (!linuxvars.XDisplay){ if (!linuxvars.XDisplay){
// NOTE(inso): probably not worth trying the popup in this case... // NOTE(inso): probably not worth trying the popup in this case...
fprintf(stderr, "Can't open display!\n"); LOG("Can't open display!\n");
return 1; return(1);
} }
#define LOAD_ATOM(x) linuxvars.atom_##x = XInternAtom(linuxvars.XDisplay, #x, False); #define LOAD_ATOM(x) linuxvars.atom_##x = XInternAtom(linuxvars.XDisplay, #x, False);
@ -2508,10 +2503,10 @@ main(int argc, char **argv){
linuxvars.dpi_x = dw_mm ? dw / (dw_mm / 25.4) : 96; linuxvars.dpi_x = dw_mm ? dw / (dw_mm / 25.4) : 96;
linuxvars.dpi_y = dh_mm ? dh / (dh_mm / 25.4) : 96; linuxvars.dpi_y = dh_mm ? dh / (dh_mm / 25.4) : 96;
fprintf(stderr, "%dx%d - %dmmx%dmm DPI: %dx%d\n", dw, dh, dw_mm, dh_mm, linuxvars.dpi_x, linuxvars.dpi_y); LOGF("%dx%d - %dmmx%dmm DPI: %dx%d\n", dw, dh, dw_mm, dh_mm, linuxvars.dpi_x, linuxvars.dpi_y);
} }
else{ else{
fprintf(stderr, "DPI from XSETTINGS: %d\n", linuxvars.dpi_x); LOGF("DPI from XSETTINGS: %d\n", linuxvars.dpi_x);
} }
int window_width, window_height; int window_width, window_height;
@ -2527,7 +2522,7 @@ main(int argc, char **argv){
XFixesSelectSelectionInput(linuxvars.XDisplay, linuxvars.XWindow, linuxvars.atom_CLIPBOARD, XFixesSetSelectionOwnerNotifyMask); XFixesSelectSelectionInput(linuxvars.XDisplay, linuxvars.XWindow, linuxvars.atom_CLIPBOARD, XFixesSetSelectionOwnerNotifyMask);
} }
else{ else{
fprintf(stderr, "Your X server doesn't support XFIXES, mention this fact if you report any clipboard-related issues.\n"); LOG("Your X server doesn't support XFIXES, mention this fact if you report any clipboard-related issues.\n");
} }
Init_Input_Result input_result = LinuxInputInit(linuxvars.XDisplay, linuxvars.XWindow); Init_Input_Result input_result = LinuxInputInit(linuxvars.XDisplay, linuxvars.XWindow);
@ -2624,7 +2619,7 @@ main(int argc, char **argv){
if (num_events == -1){ if (num_events == -1){
if (errno != EINTR){ if (errno != EINTR){
fprintf(stderr, "epoll_wait\n"); LOG("epoll_wait\n");
} }
continue; continue;
} }
@ -2737,7 +2732,9 @@ main(int argc, char **argv){
} }
if (linuxvars.XDisplay){ if (linuxvars.XDisplay){
if(linuxvars.XWindow) XDestroyWindow(linuxvars.XDisplay, linuxvars.XWindow); if (linuxvars.XWindow){
XDestroyWindow(linuxvars.XDisplay, linuxvars.XWindow);
}
XCloseDisplay(linuxvars.XDisplay); XCloseDisplay(linuxvars.XDisplay);
} }