Diff
1diff --git a/flake.lock b/flake.lock
2index 0317059c9b62778f72e544e5efe3b3da85ada681..7434f44593a11c017c258d1b99a9d4bbede4a8c9 100644
3--- a/flake.lock
4+++ b/flake.lock
5@@ -145,17 +145,17 @@
6 "xdph": "xdph"
7 },
8 "locked": {
9- "lastModified": 1746735318,
10- "narHash": "sha256-iN0Ge4LaVT7rATqzIrAZFSdfYuIXbe4/HGcXle7qK1g=",
11+ "lastModified": 1747052147,
12+ "narHash": "sha256-c0e3V7Rqu2DZuix1lRBXedInzSskow8ssQSsmqkW38o=",
13 "owner": "hyprwm",
14 "repo": "Hyprland",
15- "rev": "9958d297641b5c84dcff93f9039d80a5ad37ab00",
16+ "rev": "da3583fd5e86044d02af9fcfac84724e02545336",
17 "type": "github"
18 },
19 "original": {
20 "owner": "hyprwm",
21 "repo": "Hyprland",
22- "rev": "9958d297641b5c84dcff93f9039d80a5ad37ab00",
23+ "rev": "da3583fd5e86044d02af9fcfac84724e02545336",
24 "type": "github"
25 }
26 },
27diff --git a/flake.nix b/flake.nix
28index e5d1dd21b42bf438cfd358166118f9bb42c74919..eda06b17ca42e948ed3267e33ea94bff69a14f19 100644
29--- a/flake.nix
30+++ b/flake.nix
31@@ -1,6 +1,6 @@
32 {
33 inputs = {
34- hyprland.url = "github:hyprwm/Hyprland?rev=9958d297641b5c84dcff93f9039d80a5ad37ab00";
35+ hyprland.url = "github:hyprwm/Hyprland/da3583fd5e86044d02af9fcfac84724e02545336";
36 };
37
38 outputs = { self, hyprland, ... }: let
39diff --git a/src/render.cpp b/src/render.cpp
40index 94ef6b8a8480d16d14b7a4296db1586b61d5a2db..9ec65d8ac59ccdaee24b1b1110fd1899f52054a3 100644
41--- a/src/render.cpp
42+++ b/src/render.cpp
43@@ -35,7 +35,7 @@ void Hy3Render::renderTab(
44
45 auto glMatrix = rdata.projection.copy().multiply(matrix);
46
47- glUseProgram(shader.program);
48+ g_pHyprOpenGL->useProgram(shader.program);
49
50 #ifndef GLES2
51 glUniformMatrix3fv(shader.proj, 1, GL_TRUE, glMatrix.getMatrix().data());
52diff --git a/src/shaders.cpp b/src/shaders.cpp
53index e5e011d9a11739246c08757e43a0e7c221002f14..de565497526f066fa804de2b41d9b638b7edf323 100644
54--- a/src/shaders.cpp
55+++ b/src/shaders.cpp
56@@ -1,5 +1,6 @@
57 #include "shaders.hpp"
58 #include <csignal>
59+#include <string>
60
61 #include <GLES2/gl2.h>
62 #include <hyprland/src/render/OpenGL.hpp>
63@@ -9,7 +10,7 @@
64 Hy3Shaders::Hy3Shaders() {
65 {
66 auto& s = this->tab;
67- s.program = Hy3Shaders::createProgram(SHADER_TAB_VERT, SHADER_TAB_FRAG);
68+ s.program = g_pHyprOpenGL->createProgram(std::string(SHADER_TAB_VERT), std::string(SHADER_TAB_FRAG));
69 s.posAttrib = glGetAttribLocation(s.program, "pos");
70 s.proj = glGetUniformLocation(s.program, "proj");
71 s.monitorSize = glGetUniformLocation(s.program, "monitorSize");
72@@ -31,65 +32,3 @@ Hy3Shaders* Hy3Shaders::instance() {
73 static auto* INSTANCE = new Hy3Shaders();
74 return INSTANCE;
75 }
76-
77-GLuint Hy3Shaders::createProgram(const std::string_view vert, const std::string_view frag) {
78- auto vshader = compileShader(GL_VERTEX_SHADER, vert);
79- auto fshader = compileShader(GL_FRAGMENT_SHADER, frag);
80-
81- auto program = glCreateProgram();
82- glAttachShader(program, vshader);
83- glAttachShader(program, fshader);
84- glLinkProgram(program);
85-
86- glDetachShader(program, vshader);
87- glDetachShader(program, fshader);
88- glDeleteShader(vshader);
89- glDeleteShader(fshader);
90-
91- GLint ok;
92- glGetProgramiv(program, GL_LINK_STATUS, &ok);
93-
94- if (ok != GL_TRUE) {
95- Hy3Shaders::logShaderError(program, true);
96- }
97-
98- return program;
99-}
100-
101-GLuint Hy3Shaders::compileShader(GLuint type, const std::string_view src) {
102- auto srcdata = src.data();
103- GLint srclen = src.length();
104-
105- auto shader = glCreateShader(type);
106- glShaderSource(shader, 1, &srcdata, &srclen);
107- glCompileShader(shader);
108-
109- GLint ok;
110- glGetShaderiv(shader, GL_COMPILE_STATUS, &ok);
111-
112- if (ok != GL_TRUE) {
113- Hy3Shaders::logShaderError(shader, false);
114- }
115-
116- return shader;
117-}
118-
119-void Hy3Shaders::logShaderError(GLuint shader, bool program) {
120- GLint logBufferLength = 0;
121-
122- if (program) glGetProgramiv(shader, GL_INFO_LOG_LENGTH, &logBufferLength);
123- else glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &logBufferLength);
124-
125- auto* logBuffer = new char[logBufferLength];
126-
127- if (program) glGetProgramInfoLog(shader, logBufferLength, &logBufferLength, logBuffer);
128- else glGetShaderInfoLog(shader, logBufferLength, &logBufferLength, logBuffer);
129-
130- if (program) {
131- Debug::log(ERR, "Failed to link shader program: {}", logBuffer);
132- } else {
133- Debug::log(ERR, "Failed to compile shader: {}", logBuffer);
134- }
135-
136- raise(SIGABRT);
137-}
138diff --git a/src/shaders.hpp b/src/shaders.hpp
139index 07d331b3e03c3168779403fb82c35f7c0dc8ab19..500c6020f9f814d9fab17e262ef9c59a0d458428 100644
140--- a/src/shaders.hpp
141+++ b/src/shaders.hpp
142@@ -1,7 +1,5 @@
143 #pragma once
144
145-#include <string_view>
146-
147 #include <GLES2/gl2.h>
148 #include <hyprland/src/render/OpenGL.hpp>
149
150@@ -28,8 +26,4 @@ public:
151 private:
152 Hy3Shaders();
153 ~Hy3Shaders();
154-
155- static GLuint createProgram(const std::string_view vert, const std::string_view frag);
156- static GLuint compileShader(GLuint type, const std::string_view src);
157- static void logShaderError(GLuint shader, bool program);
158 };