diff --git a/flake.nix b/flake.nix index 6c6253e..c1ffc3d 100644 --- a/flake.nix +++ b/flake.nix @@ -36,6 +36,7 @@ ninja (pkgs.llvmPackages_20.clang-tools.override { enableLibcxx = true; }) lldb + valgrind lua diff --git a/src/LunarWM_core.c b/src/LunarWM_core.c index 7b138c1..5829edc 100644 --- a/src/LunarWM_core.c +++ b/src/LunarWM_core.c @@ -266,6 +266,13 @@ void LunarWM_destroy(LunarWM *wm) LunarWM_wayland_cleanup(wm); cleanup_lua_cfg(wm); + for (size_t i = 0; i < ARRAY_SZ(wm->wm.workspaces); ++i) { + if (wm->wm.workspaces[i].v_windows) { + vector_free(wm->wm.workspaces[i].v_windows); + wm->wm.workspaces[i].v_windows = NULL; + } + } + memset(wm, 0, sizeof(*wm)); } @@ -425,10 +432,10 @@ void LunarWM_run(LunarWM *wm) wlr_log(WLR_ERROR, "Failed to end OpenXR frame"); return; } - - EndDrawing(); } else { wm->renderer.camera.fovy = 75; } + + EndDrawing(); } } diff --git a/src/LunarWM_wayland.c b/src/LunarWM_wayland.c index 4ecf947..3928b34 100644 --- a/src/LunarWM_wayland.c +++ b/src/LunarWM_wayland.c @@ -1654,20 +1654,6 @@ static void handle_output_frame(struct wl_listener *listener, void *data) // wm->renderer.main_rt = LoadRenderTexture(width, height); // } - if (!wlr_render_pass_submit(pass)) { - wlr_output_state_finish(&state); - wlr_output_schedule_frame(wlr_output); - wlr_log(WLR_ERROR, "Failed to submit render pass for output %s", - wlr_output->name); - return; - } - - if (!wlr_output_commit_state(wlr_output, &state)) { - wlr_output_state_finish(&state); - wlr_output_schedule_frame(wlr_output); - return; - } - wm->renderer.tmp_rt.id = drawFboId; wm->renderer.tmp_rt.texture = (Texture) { .id = drawFboId, @@ -1742,6 +1728,20 @@ static void handle_output_frame(struct wl_listener *listener, void *data) wm->renderer.camera.target, wm->cman->cfg.space.radius); } + if (!wlr_render_pass_submit(pass)) { + wlr_output_state_finish(&state); + wlr_output_schedule_frame(wlr_output); + wlr_log(WLR_ERROR, "Failed to submit render pass for output %s", + wlr_output->name); + return; + } + + if (!wlr_output_commit_state(wlr_output, &state)) { + wlr_output_state_finish(&state); + wlr_output_schedule_frame(wlr_output); + return; + } + wlr_output_state_finish(&state); }