Allow toggling xdg configure debug output at runtime

This commit is contained in:
Kovid Goyal
2021-04-07 15:24:58 +05:30
parent bf3fc5fb92
commit 850a8218db
8 changed files with 25 additions and 18 deletions

1
glfw/glfw3.h vendored
View File

@@ -1110,6 +1110,7 @@ typedef enum {
*/
#define GLFW_ANGLE_PLATFORM_TYPE 0x00050002
#define GLFW_DEBUG_KEYBOARD 0x00050003
#define GLFW_DEBUG_RENDERING 0x00050004
/*! @brief macOS specific init hint.
*
* macOS specific [init hint](@ref GLFW_COCOA_CHDIR_RESOURCES_hint).

19
glfw/init.c vendored
View File

@@ -50,14 +50,14 @@ _GLFWlibrary _glfw = { false };
//
static _GLFWerror _glfwMainThreadError;
static GLFWerrorfun _glfwErrorCallback;
static _GLFWinitconfig _glfwInitHints =
{
true, // hat buttons
GLFW_ANGLE_PLATFORM_TYPE_NONE, // ANGLE backend
false, // debug keyboard
{
true, // macOS menu bar
true // macOS bundle chdir
static _GLFWinitconfig _glfwInitHints = {
.hatButtons = true,
.angleType = GLFW_ANGLE_PLATFORM_TYPE_NONE,
.debugKeyboard = false,
.debugRendering = false,
.ns = {
.menubar = true, // macOS menu bar
.chdir = true // macOS bundle chdir
}
};
@@ -285,6 +285,9 @@ GLFWAPI void glfwInitHint(int hint, int value)
case GLFW_DEBUG_KEYBOARD:
_glfwInitHints.debugKeyboard = value;
return;
case GLFW_DEBUG_RENDERING:
_glfwInitHints.debugRendering = value;
return;
case GLFW_COCOA_CHDIR_RESOURCES:
_glfwInitHints.ns.chdir = value;
return;

1
glfw/internal.h vendored
View File

@@ -276,6 +276,7 @@ struct _GLFWinitconfig
bool hatButtons;
int angleType;
bool debugKeyboard;
bool debugRendering;
struct {
bool menubar;
bool chdir;

4
glfw/wl_window.c vendored
View File

@@ -407,7 +407,7 @@ static void xdgToplevelHandleConfigure(void* data,
float targetRatio;
enum xdg_toplevel_state* state;
uint32_t new_states = 0;
const bool report_event = true;
const bool report_event = _glfw.hints.init.debugRendering;
if (report_event) printf("top-level configure event: size: %dx%d states: ", width, height);
wl_array_for_each(state, states) {
@@ -446,7 +446,7 @@ static void xdgToplevelHandleConfigure(void* data,
}
window->wl.toplevel_states = new_states;
set_csd_window_geometry(window, &width, &height);
if (report_event) printf("final window size: %dx%d\n", window->wl.width, window->wl.height);
if (report_event) printf("final window content size: %dx%d\n", window->wl.width, window->wl.height);
wl_surface_commit(window->wl.surface);
dispatchChangesAfterConfigure(window, width, height);
_glfwInputWindowFocus(window, window->wl.toplevel_states & TOPLEVEL_STATE_ACTIVATED);