Refactor renderer -> glava_renderer, renderer_handle -> glava_handle
This commit is contained in:
@@ -3,7 +3,7 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
static renderer_handle handle;
|
static glava_handle handle;
|
||||||
|
|
||||||
static void handle_term (int _) {
|
static void handle_term (int _) {
|
||||||
printf("Interrupt recieved, closing...\n");
|
printf("Interrupt recieved, closing...\n");
|
||||||
|
|||||||
@@ -234,7 +234,7 @@ static struct option p_opts[] = {
|
|||||||
{0, 0, 0, 0 }
|
{0, 0, 0, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
static renderer* rd = NULL;
|
static glava_renderer* rd = NULL;
|
||||||
|
|
||||||
#define append_buf(buf, sz_store, ...) \
|
#define append_buf(buf, sz_store, ...) \
|
||||||
({ \
|
({ \
|
||||||
@@ -242,8 +242,8 @@ static renderer* rd = NULL;
|
|||||||
buf[*sz_store - 1] = __VA_ARGS__; \
|
buf[*sz_store - 1] = __VA_ARGS__; \
|
||||||
})
|
})
|
||||||
|
|
||||||
/* Wait for renderer target texture to be initialized and valid */
|
/* Wait for glava_renderer target texture to be initialized and valid */
|
||||||
__attribute__((visibility("default"))) void glava_wait(renderer_handle* ref) {
|
__attribute__((visibility("default"))) void glava_wait(glava_handle* ref) {
|
||||||
while(__atomic_load_n(ref, __ATOMIC_SEQ_CST) == NULL) {
|
while(__atomic_load_n(ref, __ATOMIC_SEQ_CST) == NULL) {
|
||||||
/* Edge case: handle has not been assigned */
|
/* Edge case: handle has not been assigned */
|
||||||
struct timespec tv = {
|
struct timespec tv = {
|
||||||
@@ -257,27 +257,27 @@ __attribute__((visibility("default"))) void glava_wait(renderer_handle* ref) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Atomic size request */
|
/* Atomic size request */
|
||||||
__attribute__((visibility("default"))) void glava_sizereq(renderer_handle r, int x, int y, int w, int h) {
|
__attribute__((visibility("default"))) void glava_sizereq(glava_handle r, int x, int y, int w, int h) {
|
||||||
r->sizereq = (typeof(r->sizereq)) { .x = x, .y = y, .w = w, .h = h };
|
r->sizereq = (typeof(r->sizereq)) { .x = x, .y = y, .w = w, .h = h };
|
||||||
__atomic_store_n(&r->sizereq_flag, GLAVA_REQ_RESIZE, __ATOMIC_SEQ_CST);
|
__atomic_store_n(&r->sizereq_flag, GLAVA_REQ_RESIZE, __ATOMIC_SEQ_CST);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Atomic terminate request */
|
/* Atomic terminate request */
|
||||||
__attribute__((visibility("default"))) void glava_terminate(renderer_handle* ref) {
|
__attribute__((visibility("default"))) void glava_terminate(glava_handle* ref) {
|
||||||
renderer_handle store = __atomic_exchange_n(ref, NULL, __ATOMIC_SEQ_CST);
|
glava_handle store = __atomic_exchange_n(ref, NULL, __ATOMIC_SEQ_CST);
|
||||||
__atomic_store_n(&store->alive, false, __ATOMIC_SEQ_CST);
|
__atomic_store_n(&store->alive, false, __ATOMIC_SEQ_CST);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Atomic reload request */
|
/* Atomic reload request */
|
||||||
__attribute__((visibility("default"))) void glava_reload(renderer_handle* ref) {
|
__attribute__((visibility("default"))) void glava_reload(glava_handle* ref) {
|
||||||
renderer_handle store = __atomic_exchange_n(ref, NULL, __ATOMIC_SEQ_CST);
|
glava_handle store = __atomic_exchange_n(ref, NULL, __ATOMIC_SEQ_CST);
|
||||||
__atomic_store_n(&reload, true, __ATOMIC_SEQ_CST);
|
__atomic_store_n(&reload, true, __ATOMIC_SEQ_CST);
|
||||||
__atomic_store_n(&store->alive, false, __ATOMIC_SEQ_CST);
|
__atomic_store_n(&store->alive, false, __ATOMIC_SEQ_CST);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Main entry */
|
/* Main entry */
|
||||||
__attribute__((visibility("default"))) void glava_entry(int argc, char** argv, renderer_handle* ret) {
|
__attribute__((visibility("default"))) void glava_entry(int argc, char** argv, glava_handle* ret) {
|
||||||
|
|
||||||
/* Evaluate these macros only once, since they allocate */
|
/* Evaluate these macros only once, since they allocate */
|
||||||
const char
|
const char
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
struct gl_data;
|
struct gl_data;
|
||||||
|
|
||||||
typedef struct renderer {
|
typedef struct glava_renderer {
|
||||||
volatile bool alive;
|
volatile bool alive;
|
||||||
bool mirror_input;
|
bool mirror_input;
|
||||||
size_t bufsize_request, rate_request, samplesize_request;
|
size_t bufsize_request, rate_request, samplesize_request;
|
||||||
@@ -23,18 +23,18 @@ typedef struct renderer {
|
|||||||
} sizereq;
|
} sizereq;
|
||||||
volatile int sizereq_flag;
|
volatile int sizereq_flag;
|
||||||
struct gl_data* gl;
|
struct gl_data* gl;
|
||||||
} renderer;
|
} glava_renderer;
|
||||||
|
|
||||||
/* External API */
|
/* External API */
|
||||||
|
|
||||||
typedef struct renderer* volatile renderer_handle;
|
typedef struct glava_renderer* volatile glava_handle;
|
||||||
__attribute__((noreturn, visibility("default"))) void (*glava_abort) (void);
|
__attribute__((noreturn, visibility("default"))) void (*glava_abort) (void);
|
||||||
__attribute__((noreturn, visibility("default"))) void (*glava_return) (void);
|
__attribute__((noreturn, visibility("default"))) void (*glava_return) (void);
|
||||||
__attribute__((visibility("default"))) void glava_assign_external_ctx (void* ctx);
|
__attribute__((visibility("default"))) void glava_assign_external_ctx (void* ctx);
|
||||||
__attribute__((visibility("default"))) void glava_entry (int argc, char** argv, renderer_handle* ret);
|
__attribute__((visibility("default"))) void glava_entry (int argc, char** argv, glava_handle* ret);
|
||||||
__attribute__((visibility("default"))) void glava_terminate (renderer_handle* ref);
|
__attribute__((visibility("default"))) void glava_terminate (glava_handle* ref);
|
||||||
__attribute__((visibility("default"))) void glava_reload (renderer_handle* ref);
|
__attribute__((visibility("default"))) void glava_reload (glava_handle* ref);
|
||||||
__attribute__((visibility("default"))) void glava_sizereq (renderer_handle r, int x, int y, int w, int h);
|
__attribute__((visibility("default"))) void glava_sizereq (glava_handle r, int x, int y, int w, int h);
|
||||||
__attribute__((visibility("default"))) void glava_wait (renderer_handle* ref);
|
__attribute__((visibility("default"))) void glava_wait (glava_handle* ref);
|
||||||
|
|
||||||
#endif /* _GLAVA_H */
|
#endif /* _GLAVA_H */
|
||||||
|
|||||||
@@ -159,7 +159,7 @@ struct gl_data {
|
|||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
bool rd_get_test_mode(struct renderer* r) {
|
bool rd_get_test_mode(struct glava_renderer* r) {
|
||||||
struct gl_data* gl = r->gl;
|
struct gl_data* gl = r->gl;
|
||||||
return gl->test_mode;
|
return gl->test_mode;
|
||||||
}
|
}
|
||||||
@@ -801,7 +801,7 @@ static struct gl_bind_src* lookup_bind_src(const char* str) {
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct renderer* rd_new(const char** paths, const char* entry,
|
struct glava_renderer* rd_new(const char** paths, const char* entry,
|
||||||
const char** requests, const char* force_backend,
|
const char** requests, const char* force_backend,
|
||||||
struct rd_bind* bindings, int stdin_type,
|
struct rd_bind* bindings, int stdin_type,
|
||||||
bool auto_desktop, bool verbose,
|
bool auto_desktop, bool verbose,
|
||||||
@@ -809,8 +809,8 @@ struct renderer* rd_new(const char** paths, const char* entry,
|
|||||||
|
|
||||||
xwin_wait_for_wm();
|
xwin_wait_for_wm();
|
||||||
|
|
||||||
renderer* r = malloc(sizeof(struct renderer));
|
glava_renderer* r = malloc(sizeof(struct glava_renderer));
|
||||||
*r = (struct renderer) {
|
*r = (struct glava_renderer) {
|
||||||
.alive = true,
|
.alive = true,
|
||||||
.mirror_input = false,
|
.mirror_input = false,
|
||||||
.gl = malloc(sizeof(struct gl_data)),
|
.gl = malloc(sizeof(struct gl_data)),
|
||||||
@@ -1568,13 +1568,13 @@ struct renderer* rd_new(const char** paths, const char* entry,
|
|||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
void rd_time(struct renderer* r) {
|
void rd_time(struct glava_renderer* r) {
|
||||||
struct gl_data* gl = r->gl;
|
struct gl_data* gl = r->gl;
|
||||||
|
|
||||||
gl->wcb->set_time(gl->w, 0.0D); /* reset time for measuring this frame */
|
gl->wcb->set_time(gl->w, 0.0D); /* reset time for measuring this frame */
|
||||||
}
|
}
|
||||||
|
|
||||||
bool rd_update(struct renderer* r, float* lb, float* rb, size_t bsz, bool modified) {
|
bool rd_update(struct glava_renderer* r, float* lb, float* rb, size_t bsz, bool modified) {
|
||||||
struct gl_data* gl = r->gl;
|
struct gl_data* gl = r->gl;
|
||||||
size_t t, a, fbsz = bsz * sizeof(float);
|
size_t t, a, fbsz = bsz * sizeof(float);
|
||||||
|
|
||||||
@@ -2145,7 +2145,7 @@ bool rd_update(struct renderer* r, float* lb, float* rb, size_t bsz, bool modifi
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef GLAVA_DEBUG
|
#ifdef GLAVA_DEBUG
|
||||||
bool rd_test_evaluate(struct renderer* r) {
|
bool rd_test_evaluate(struct glava_renderer* r) {
|
||||||
int w, h;
|
int w, h;
|
||||||
struct gl_data* gl = r->gl;
|
struct gl_data* gl = r->gl;
|
||||||
gl->wcb->get_fbsize(gl->w, &w, &h);
|
gl->wcb->get_fbsize(gl->w, &w, &h);
|
||||||
@@ -2181,10 +2181,10 @@ end_test:
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void* rd_get_impl_window (struct renderer* r) { return r->gl->w; }
|
void* rd_get_impl_window (struct glava_renderer* r) { return r->gl->w; }
|
||||||
struct gl_wcb* rd_get_wcb (struct renderer* r) { return r->gl->wcb; }
|
struct gl_wcb* rd_get_wcb (struct glava_renderer* r) { return r->gl->wcb; }
|
||||||
|
|
||||||
void rd_destroy(struct renderer* r) {
|
void rd_destroy(struct glava_renderer* r) {
|
||||||
r->gl->wcb->destroy(r->gl->w);
|
r->gl->wcb->destroy(r->gl->w);
|
||||||
if (r->gl->interpolate) free(r->gl->interpolate_buf[0]);
|
if (r->gl->interpolate) free(r->gl->interpolate_buf[0]);
|
||||||
size_t t, b;
|
size_t t, b;
|
||||||
|
|||||||
@@ -30,21 +30,21 @@ struct rd_bind {
|
|||||||
};
|
};
|
||||||
|
|
||||||
#ifdef GLAVA_DEBUG
|
#ifdef GLAVA_DEBUG
|
||||||
bool rd_get_test_mode (struct renderer*);
|
bool rd_get_test_mode (struct glava_renderer*);
|
||||||
bool rd_test_evaluate (struct renderer*);
|
bool rd_test_evaluate (struct glava_renderer*);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
struct renderer* rd_new (const char** paths, const char* entry,
|
struct glava_renderer* rd_new (const char** paths, const char* entry,
|
||||||
const char** requests, const char* force_backend,
|
const char** requests, const char* force_backend,
|
||||||
struct rd_bind* bindings, int stdin_type,
|
struct rd_bind* bindings, int stdin_type,
|
||||||
bool auto_desktop, bool verbose,
|
bool auto_desktop, bool verbose,
|
||||||
bool test_mode);
|
bool test_mode);
|
||||||
bool rd_update (struct renderer*, float* lb, float* rb,
|
bool rd_update (struct glava_renderer*, float* lb, float* rb,
|
||||||
size_t bsz, bool modified);
|
size_t bsz, bool modified);
|
||||||
void rd_destroy (struct renderer*);
|
void rd_destroy (struct glava_renderer*);
|
||||||
void rd_time (struct renderer*);
|
void rd_time (struct glava_renderer*);
|
||||||
void* rd_get_impl_window(struct renderer*);
|
void* rd_get_impl_window(struct glava_renderer*);
|
||||||
struct gl_wcb* rd_get_wcb (struct renderer*);
|
struct gl_wcb* rd_get_wcb (struct glava_renderer*);
|
||||||
|
|
||||||
/* gl_wcb - OpenGL Window Creation Backend interface */
|
/* gl_wcb - OpenGL Window Creation Backend interface */
|
||||||
struct gl_wcb {
|
struct gl_wcb {
|
||||||
|
|||||||
@@ -265,7 +265,7 @@ static Drawable get_drawable(Display* d, Window w) {
|
|||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned int xwin_copyglbg(struct renderer* rd, unsigned int tex) {
|
unsigned int xwin_copyglbg(struct glava_renderer* rd, unsigned int tex) {
|
||||||
GLuint texture = (GLuint) tex;
|
GLuint texture = (GLuint) tex;
|
||||||
if (!texture)
|
if (!texture)
|
||||||
glGenTextures(1, &texture);
|
glGenTextures(1, &texture);
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ void xwin_wait_for_wm(void);
|
|||||||
bool xwin_settype(struct gl_wcb* wcb, void* impl, const char* type);
|
bool xwin_settype(struct gl_wcb* wcb, void* impl, const char* type);
|
||||||
void xwin_setdesktop(struct gl_wcb* wcb, void* impl, unsigned long desktop);
|
void xwin_setdesktop(struct gl_wcb* wcb, void* impl, unsigned long desktop);
|
||||||
void xwin_addstate(struct gl_wcb* wcb, void* impl, const char* state);
|
void xwin_addstate(struct gl_wcb* wcb, void* impl, const char* state);
|
||||||
unsigned int xwin_copyglbg(struct renderer* rd, unsigned int texture);
|
unsigned int xwin_copyglbg(struct glava_renderer* rd, unsigned int texture);
|
||||||
Window* xwin_get_desktop_layer(struct gl_wcb* wcb);
|
Window* xwin_get_desktop_layer(struct gl_wcb* wcb);
|
||||||
const char* xwin_detect_wm(struct gl_wcb* wcb);
|
const char* xwin_detect_wm(struct gl_wcb* wcb);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user