From 164c8dd15fa32956cd277d505020ed458cff1d0a Mon Sep 17 00:00:00 2001 From: Rakarake Date: Sat, 3 Jan 2026 17:12:24 +0100 Subject: [PATCH] freedom --- flake.nix | 10 ++++++---- renderer.c | 17 ++++++++++++++++- renderer.h | 3 +++ 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/flake.nix b/flake.nix index 78bb435..4d8d113 100644 --- a/flake.nix +++ b/flake.nix @@ -14,12 +14,14 @@ LD_LIBRARY_PATH = "${pkgs.lib.makeLibraryPath buildInputs}"; name = "glonkers"; src = ./.; - buildInputs = with pkgs; [ + nativeBuildInputs = with pkgs; [ pkg-config - libGL - wayland - wayland-protocols wayland-scanner + wayland-protocols + wayland + ]; + buildInputs = with pkgs; [ + libGL ]; installPhase = '' mkdir -p $out/bin diff --git a/renderer.c b/renderer.c index 67e27df..01dad63 100644 --- a/renderer.c +++ b/renderer.c @@ -134,9 +134,24 @@ Renderer new_renderer() { return renderer; } +int shader_file_was_modified(Renderer *state) { + struct stat buf; + stat(state->shader_path, &buf); + int modified = buf.st_mtime != state->shader_file_modified.st_mtime; + if (modified) { + state->shader_file_modified = buf; + } + return modified; +} + /// shader_path cannot be NULL. void render(Renderer *state, int w, int h, double time, char *shader_path, int reload_shader) { - if (reload_shader || strcmp(state->shader_path, shader_path)) { + int m = shader_file_was_modified(state); + if (m) { + printf("AWOOGA\n"); + } + + if (m || reload_shader || strcmp(state->shader_path, shader_path)) { state->shader = load_shader(shader_path); state->shader_path = shader_path; } diff --git a/renderer.h b/renderer.h index ffcfb9a..531251c 100644 --- a/renderer.h +++ b/renderer.h @@ -1,10 +1,13 @@ #ifndef RENDERER_H #define RENDERER_H +#include + typedef struct Renderer { char *shader_path; unsigned int shader; unsigned int vao; + struct stat shader_file_modified; } Renderer; Renderer new_renderer();