Tue, 28 Oct 2025 22:03:06 +0100
fix that dependencies for tools are always checked
| 44 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 1 | /* | 
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 2 | * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. | 
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 3 | * Copyright 2023 Mike Becker. All rights reserved. | 
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 4 | * | 
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 5 | * Redistribution and use in source and binary forms, with or without | 
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 6 | * modification, are permitted provided that the following conditions are met: | 
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 7 | * | 
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 8 | * 1. Redistributions of source code must retain the above copyright | 
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 9 | * notice, this list of conditions and the following disclaimer. | 
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 10 | * | 
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 11 | * 2. Redistributions in binary form must reproduce the above copyright | 
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 12 | * notice, this list of conditions and the following disclaimer in the | 
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 13 | * documentation and/or other materials provided with the distribution. | 
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 14 | * | 
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 15 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | 
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 16 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | 
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 17 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | 
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 18 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE | 
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 19 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | 
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 20 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | 
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 21 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | 
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 22 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | 
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 23 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | 
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 24 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | 
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 25 | * POSSIBILITY OF SUCH DAMAGE. | 
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 26 | */ | 
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 27 | |
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 28 | #include "ascension/glcontext.h" | 
| 142 
27c9bbd765d0
fix includes in glcontext.c
 Mike Becker <universe@uap-core.de> parents: 
139diff
changeset | 29 | #include "ascension/shader.h" | 
| 106 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: 
105diff
changeset | 30 | #include "ascension/error.h" | 
| 44 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 31 | |
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 32 | #include <GL/glew.h> | 
| 110 
29f8d0d586f8
replace mempool with custom cleanup functions
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 33 | #include <cx/array_list.h> | 
| 44 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 34 | |
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 35 | static void asc_gl_debug_callback( | 
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 36 | GLenum source, GLenum type, GLuint id, GLenum severity, | 
| 149 
560772519ff9
resolve east-west conflict
 Mike Becker <universe@uap-core.de> parents: 
144diff
changeset | 37 | GLsizei length, const GLchar *message, | 
| 188 
5ece6e3acc84
enclose GCC attribute with an ifdef
 Mike Becker <universe@uap-core.de> parents: 
149diff
changeset | 38 | #ifdef __GNUC__ | 
| 
5ece6e3acc84
enclose GCC attribute with an ifdef
 Mike Becker <universe@uap-core.de> parents: 
149diff
changeset | 39 | __attribute__((__unused__)) | 
| 
5ece6e3acc84
enclose GCC attribute with an ifdef
 Mike Becker <universe@uap-core.de> parents: 
149diff
changeset | 40 | #endif | 
| 
5ece6e3acc84
enclose GCC attribute with an ifdef
 Mike Becker <universe@uap-core.de> parents: 
149diff
changeset | 41 | const void *userParam | 
| 44 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 42 | ) { | 
| 92 | 43 | if (type == GL_DEBUG_TYPE_ERROR) { | 
| 208 
658bccb1bf73
improve OpenGL error handling
 Mike Becker <universe@uap-core.de> parents: 
188diff
changeset | 44 | asc_wprintf("OpenGL source = %d, id = %u, type = %d, severity= %d, message = %.*s", | 
| 44 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 45 | source, id, type, severity, length, message); | 
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 46 | } else { | 
| 92 | 47 | asc_dprintf("OpenGL source = %d, id = %u, type = %d, severity= %d, message = %.*s", | 
| 48 | source, id, type, severity, length, message); | |
| 44 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 49 | } | 
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 50 | } | 
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 51 | |
| 110 
29f8d0d586f8
replace mempool with custom cleanup functions
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 52 | struct asc_gl_context_cleanup_data { | 
| 
29f8d0d586f8
replace mempool with custom cleanup functions
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 53 | int type; | 
| 
29f8d0d586f8
replace mempool with custom cleanup functions
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 54 | union { | 
| 
29f8d0d586f8
replace mempool with custom cleanup functions
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 55 | void(*f1)(void); | 
| 
29f8d0d586f8
replace mempool with custom cleanup functions
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 56 | void(*f2)(void*); | 
| 
29f8d0d586f8
replace mempool with custom cleanup functions
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 57 | void(*f3)(void*, void*); | 
| 
29f8d0d586f8
replace mempool with custom cleanup functions
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 58 | }; | 
| 
29f8d0d586f8
replace mempool with custom cleanup functions
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 59 | void *memory; | 
| 
29f8d0d586f8
replace mempool with custom cleanup functions
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 60 | void *additional_data; | 
| 
29f8d0d586f8
replace mempool with custom cleanup functions
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 61 | }; | 
| 
29f8d0d586f8
replace mempool with custom cleanup functions
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 62 | |
| 
29f8d0d586f8
replace mempool with custom cleanup functions
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 63 | static void asc_gl_context_cleanup(struct asc_gl_context_cleanup_data *data) { | 
| 
29f8d0d586f8
replace mempool with custom cleanup functions
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 64 | switch (data->type) { | 
| 
29f8d0d586f8
replace mempool with custom cleanup functions
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 65 | case 1: | 
| 
29f8d0d586f8
replace mempool with custom cleanup functions
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 66 | data->f1(); | 
| 
29f8d0d586f8
replace mempool with custom cleanup functions
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 67 | break; | 
| 
29f8d0d586f8
replace mempool with custom cleanup functions
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 68 | case 2: | 
| 
29f8d0d586f8
replace mempool with custom cleanup functions
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 69 | data->f2(data->memory); | 
| 
29f8d0d586f8
replace mempool with custom cleanup functions
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 70 | break; | 
| 
29f8d0d586f8
replace mempool with custom cleanup functions
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 71 | default: | 
| 
29f8d0d586f8
replace mempool with custom cleanup functions
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 72 | data->f3(data->memory, data->additional_data); | 
| 
29f8d0d586f8
replace mempool with custom cleanup functions
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 73 | break; | 
| 
29f8d0d586f8
replace mempool with custom cleanup functions
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 74 | } | 
| 
29f8d0d586f8
replace mempool with custom cleanup functions
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 75 | } | 
| 
29f8d0d586f8
replace mempool with custom cleanup functions
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 76 | |
| 257 
67d7b79997df
remove AscWindowSettings struct
 Mike Becker <universe@uap-core.de> parents: 
253diff
changeset | 77 | AscGLContextSettings asc_gl_context_settings_default(int gl_major_version, int gl_minor_version) { | 
| 
67d7b79997df
remove AscWindowSettings struct
 Mike Becker <universe@uap-core.de> parents: 
253diff
changeset | 78 | return (AscGLContextSettings) { | 
| 
67d7b79997df
remove AscWindowSettings struct
 Mike Becker <universe@uap-core.de> parents: 
253diff
changeset | 79 | .gl_major_version = gl_major_version, | 
| 
67d7b79997df
remove AscWindowSettings struct
 Mike Becker <universe@uap-core.de> parents: 
253diff
changeset | 80 | .gl_minor_version = gl_minor_version, | 
| 
67d7b79997df
remove AscWindowSettings struct
 Mike Becker <universe@uap-core.de> parents: 
253diff
changeset | 81 | .depth_size = 24, | 
| 
67d7b79997df
remove AscWindowSettings struct
 Mike Becker <universe@uap-core.de> parents: 
253diff
changeset | 82 | .vsync = true, | 
| 
67d7b79997df
remove AscWindowSettings struct
 Mike Becker <universe@uap-core.de> parents: 
253diff
changeset | 83 | .fullscreen = false, | 
| 
67d7b79997df
remove AscWindowSettings struct
 Mike Becker <universe@uap-core.de> parents: 
253diff
changeset | 84 | }; | 
| 
67d7b79997df
remove AscWindowSettings struct
 Mike Becker <universe@uap-core.de> parents: 
253diff
changeset | 85 | } | 
| 
67d7b79997df
remove AscWindowSettings struct
 Mike Becker <universe@uap-core.de> parents: 
253diff
changeset | 86 | |
| 44 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 87 | bool asc_gl_context_initialize( | 
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 88 | AscGLContext *ctx, | 
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 89 | SDL_Window *window, | 
| 149 
560772519ff9
resolve east-west conflict
 Mike Becker <universe@uap-core.de> parents: 
144diff
changeset | 90 | const AscGLContextSettings *settings | 
| 44 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 91 | ) { | 
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 92 | SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE); | 
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 93 | SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, settings->gl_major_version); | 
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 94 | SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, settings->gl_minor_version); | 
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 95 | SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, settings->depth_size); | 
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 96 | SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); | 
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 97 | ctx->glctx = SDL_GL_CreateContext(window); | 
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 98 | if (ctx->glctx == NULL) return false; | 
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 99 | ctx->window = window; | 
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 100 | |
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 101 | glewExperimental = GL_TRUE; | 
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 102 | GLenum err = glewInit(); | 
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 103 | if (err == GLEW_OK) { | 
| 257 
67d7b79997df
remove AscWindowSettings struct
 Mike Becker <universe@uap-core.de> parents: 
253diff
changeset | 104 | SDL_GL_SetSwapInterval(settings->vsync ? 1 : 0); | 
| 44 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 105 | |
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 106 | glClearColor(0.0f, 0.0f, 0.0f, 1.0f); | 
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 107 | glEnable(GL_DEBUG_OUTPUT); | 
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 108 | glDebugMessageCallback(asc_gl_debug_callback, NULL); | 
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 109 | |
| 139 
5d655459db85
refactor shader management - resolves #684
 Mike Becker <universe@uap-core.de> parents: 
137diff
changeset | 110 | // Create the cleanup functions array | 
| 110 
29f8d0d586f8
replace mempool with custom cleanup functions
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 111 | ctx->cleanup_funcs = cxArrayListCreateSimple(sizeof(struct asc_gl_context_cleanup_data), 8); | 
| 
29f8d0d586f8
replace mempool with custom cleanup functions
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 112 | cxDefineDestructor(ctx->cleanup_funcs, asc_gl_context_cleanup); | 
| 93 
52611a99e574
add memory pool to gl context
 Mike Becker <universe@uap-core.de> parents: 
92diff
changeset | 113 | |
| 139 
5d655459db85
refactor shader management - resolves #684
 Mike Becker <universe@uap-core.de> parents: 
137diff
changeset | 114 | // Create the shaders array | 
| 
5d655459db85
refactor shader management - resolves #684
 Mike Becker <universe@uap-core.de> parents: 
137diff
changeset | 115 | ctx->shaders = cxArrayListCreateSimple(CX_STORE_POINTERS, 32); | 
| 
5d655459db85
refactor shader management - resolves #684
 Mike Becker <universe@uap-core.de> parents: 
137diff
changeset | 116 | cxDefineDestructor(ctx->shaders, asc_shader_free); | 
| 144 
43636d6a6e25
do not try to use one distinct render group for each different shader
 Mike Becker <universe@uap-core.de> parents: 
142diff
changeset | 117 | ctx->active_program = 0; | 
| 139 
5d655459db85
refactor shader management - resolves #684
 Mike Becker <universe@uap-core.de> parents: 
137diff
changeset | 118 | |
| 44 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 119 | return true; | 
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 120 | } else { | 
| 92 | 121 | asc_error("glewInit failed: %s", glewGetErrorString(err)); | 
| 253 | 122 | SDL_GL_DestroyContext(ctx->glctx); | 
| 44 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 123 | return false; | 
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 124 | } | 
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 125 | } | 
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 126 | |
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 127 | void asc_gl_context_destroy(AscGLContext *ctx) { | 
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 128 | if (ctx->glctx == NULL) return; | 
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 129 | SDL_GL_MakeCurrent(ctx->window, ctx->glctx); | 
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 130 | |
| 139 
5d655459db85
refactor shader management - resolves #684
 Mike Becker <universe@uap-core.de> parents: 
137diff
changeset | 131 | cxListFree(ctx->shaders); | 
| 110 
29f8d0d586f8
replace mempool with custom cleanup functions
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 132 | cxListFree(ctx->cleanup_funcs); | 
| 44 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 133 | |
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 134 | // destroy the GL context and the window | 
| 253 | 135 | SDL_GL_DestroyContext(ctx->glctx); | 
| 44 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 136 | ctx->glctx = NULL; | 
| 
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 137 | } | 
| 110 
29f8d0d586f8
replace mempool with custom cleanup functions
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 138 | |
| 
29f8d0d586f8
replace mempool with custom cleanup functions
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 139 | void asc_gl_context_add_cleanup_func(AscGLContext *ctx, void(*func)(void)) { | 
| 
29f8d0d586f8
replace mempool with custom cleanup functions
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 140 | struct asc_gl_context_cleanup_data *data = cxListEmplace(ctx->cleanup_funcs); | 
| 
29f8d0d586f8
replace mempool with custom cleanup functions
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 141 | data->type = 1; | 
| 
29f8d0d586f8
replace mempool with custom cleanup functions
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 142 | data->f1 = func; | 
| 
29f8d0d586f8
replace mempool with custom cleanup functions
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 143 | } | 
| 
29f8d0d586f8
replace mempool with custom cleanup functions
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 144 | |
| 
29f8d0d586f8
replace mempool with custom cleanup functions
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 145 | void asc_gl_context_add_cleanup_func2(AscGLContext *ctx, void(*func)(void*), void *memory) { | 
| 
29f8d0d586f8
replace mempool with custom cleanup functions
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 146 | struct asc_gl_context_cleanup_data *data = cxListEmplace(ctx->cleanup_funcs); | 
| 
29f8d0d586f8
replace mempool with custom cleanup functions
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 147 | data->type = 2; | 
| 
29f8d0d586f8
replace mempool with custom cleanup functions
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 148 | data->f2 = func; | 
| 
29f8d0d586f8
replace mempool with custom cleanup functions
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 149 | data->memory = memory; | 
| 
29f8d0d586f8
replace mempool with custom cleanup functions
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 150 | } | 
| 
29f8d0d586f8
replace mempool with custom cleanup functions
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 151 | |
| 
29f8d0d586f8
replace mempool with custom cleanup functions
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 152 | void asc_gl_context_add_cleanup_func3(AscGLContext *ctx, void(*func)(void*,void*), void *memory, void *additional_data) { | 
| 
29f8d0d586f8
replace mempool with custom cleanup functions
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 153 | struct asc_gl_context_cleanup_data *data = cxListEmplace(ctx->cleanup_funcs); | 
| 
29f8d0d586f8
replace mempool with custom cleanup functions
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 154 | data->type = 3; | 
| 
29f8d0d586f8
replace mempool with custom cleanup functions
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 155 | data->f3 = func; | 
| 
29f8d0d586f8
replace mempool with custom cleanup functions
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 156 | data->memory = memory; | 
| 
29f8d0d586f8
replace mempool with custom cleanup functions
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 157 | data->additional_data = additional_data; | 
| 
29f8d0d586f8
replace mempool with custom cleanup functions
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 158 | } |