Wed, 02 Jul 2025 23:21:17 +0200
resolve TODOs regarding input.h
a) mouse position must be integer, because it can be negative (though rarely)
b) we should not trade "access complexity" for space in the scancodes array
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:
139
diff
changeset
|
29 | #include "ascension/shader.h" |
106
895f92cff6b8
bring back error.h to reduce compile dependencies
Mike Becker <universe@uap-core.de>
parents:
105
diff
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:
106
diff
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:
144
diff
changeset
|
37 | GLsizei length, const GLchar *message, |
560772519ff9
resolve east-west conflict
Mike Becker <universe@uap-core.de>
parents:
144
diff
changeset
|
38 | __attribute__((__unused__)) 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
|
39 | ) { |
92 | 40 | if (type == GL_DEBUG_TYPE_ERROR) { |
41 | asc_error("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
|
42 | 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
|
43 | } else { |
92 | 44 | asc_dprintf("OpenGL source = %d, id = %u, type = %d, severity= %d, message = %.*s", |
45 | 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
|
46 | } |
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
47 | } |
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
48 | |
110
29f8d0d586f8
replace mempool with custom cleanup functions
Mike Becker <universe@uap-core.de>
parents:
106
diff
changeset
|
49 | struct asc_gl_context_cleanup_data { |
29f8d0d586f8
replace mempool with custom cleanup functions
Mike Becker <universe@uap-core.de>
parents:
106
diff
changeset
|
50 | int type; |
29f8d0d586f8
replace mempool with custom cleanup functions
Mike Becker <universe@uap-core.de>
parents:
106
diff
changeset
|
51 | union { |
29f8d0d586f8
replace mempool with custom cleanup functions
Mike Becker <universe@uap-core.de>
parents:
106
diff
changeset
|
52 | void(*f1)(void); |
29f8d0d586f8
replace mempool with custom cleanup functions
Mike Becker <universe@uap-core.de>
parents:
106
diff
changeset
|
53 | void(*f2)(void*); |
29f8d0d586f8
replace mempool with custom cleanup functions
Mike Becker <universe@uap-core.de>
parents:
106
diff
changeset
|
54 | void(*f3)(void*, void*); |
29f8d0d586f8
replace mempool with custom cleanup functions
Mike Becker <universe@uap-core.de>
parents:
106
diff
changeset
|
55 | }; |
29f8d0d586f8
replace mempool with custom cleanup functions
Mike Becker <universe@uap-core.de>
parents:
106
diff
changeset
|
56 | void *memory; |
29f8d0d586f8
replace mempool with custom cleanup functions
Mike Becker <universe@uap-core.de>
parents:
106
diff
changeset
|
57 | void *additional_data; |
29f8d0d586f8
replace mempool with custom cleanup functions
Mike Becker <universe@uap-core.de>
parents:
106
diff
changeset
|
58 | }; |
29f8d0d586f8
replace mempool with custom cleanup functions
Mike Becker <universe@uap-core.de>
parents:
106
diff
changeset
|
59 | |
29f8d0d586f8
replace mempool with custom cleanup functions
Mike Becker <universe@uap-core.de>
parents:
106
diff
changeset
|
60 | 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:
106
diff
changeset
|
61 | switch (data->type) { |
29f8d0d586f8
replace mempool with custom cleanup functions
Mike Becker <universe@uap-core.de>
parents:
106
diff
changeset
|
62 | case 1: |
29f8d0d586f8
replace mempool with custom cleanup functions
Mike Becker <universe@uap-core.de>
parents:
106
diff
changeset
|
63 | data->f1(); |
29f8d0d586f8
replace mempool with custom cleanup functions
Mike Becker <universe@uap-core.de>
parents:
106
diff
changeset
|
64 | break; |
29f8d0d586f8
replace mempool with custom cleanup functions
Mike Becker <universe@uap-core.de>
parents:
106
diff
changeset
|
65 | case 2: |
29f8d0d586f8
replace mempool with custom cleanup functions
Mike Becker <universe@uap-core.de>
parents:
106
diff
changeset
|
66 | data->f2(data->memory); |
29f8d0d586f8
replace mempool with custom cleanup functions
Mike Becker <universe@uap-core.de>
parents:
106
diff
changeset
|
67 | break; |
29f8d0d586f8
replace mempool with custom cleanup functions
Mike Becker <universe@uap-core.de>
parents:
106
diff
changeset
|
68 | default: |
29f8d0d586f8
replace mempool with custom cleanup functions
Mike Becker <universe@uap-core.de>
parents:
106
diff
changeset
|
69 | data->f3(data->memory, data->additional_data); |
29f8d0d586f8
replace mempool with custom cleanup functions
Mike Becker <universe@uap-core.de>
parents:
106
diff
changeset
|
70 | break; |
29f8d0d586f8
replace mempool with custom cleanup functions
Mike Becker <universe@uap-core.de>
parents:
106
diff
changeset
|
71 | } |
29f8d0d586f8
replace mempool with custom cleanup functions
Mike Becker <universe@uap-core.de>
parents:
106
diff
changeset
|
72 | } |
29f8d0d586f8
replace mempool with custom cleanup functions
Mike Becker <universe@uap-core.de>
parents:
106
diff
changeset
|
73 | |
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
|
74 | 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
|
75 | 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
|
76 | SDL_Window *window, |
149
560772519ff9
resolve east-west conflict
Mike Becker <universe@uap-core.de>
parents:
144
diff
changeset
|
77 | 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
|
78 | ) { |
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
79 | 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
|
80 | 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
|
81 | 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
|
82 | 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
|
83 | 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
|
84 | 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
|
85 | 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
|
86 | 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
|
87 | |
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 | 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
|
89 | 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
|
90 | if (err == GLEW_OK) { |
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 | SDL_GL_SetSwapInterval(settings->vsync); |
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 | |
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 | 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
|
94 | 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
|
95 | 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
|
96 | |
139
5d655459db85
refactor shader management - resolves #684
Mike Becker <universe@uap-core.de>
parents:
137
diff
changeset
|
97 | // Create the cleanup functions array |
110
29f8d0d586f8
replace mempool with custom cleanup functions
Mike Becker <universe@uap-core.de>
parents:
106
diff
changeset
|
98 | 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:
106
diff
changeset
|
99 | cxDefineDestructor(ctx->cleanup_funcs, asc_gl_context_cleanup); |
93
52611a99e574
add memory pool to gl context
Mike Becker <universe@uap-core.de>
parents:
92
diff
changeset
|
100 | |
139
5d655459db85
refactor shader management - resolves #684
Mike Becker <universe@uap-core.de>
parents:
137
diff
changeset
|
101 | // Create the shaders array |
5d655459db85
refactor shader management - resolves #684
Mike Becker <universe@uap-core.de>
parents:
137
diff
changeset
|
102 | ctx->shaders = cxArrayListCreateSimple(CX_STORE_POINTERS, 32); |
5d655459db85
refactor shader management - resolves #684
Mike Becker <universe@uap-core.de>
parents:
137
diff
changeset
|
103 | 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:
142
diff
changeset
|
104 | ctx->active_program = 0; |
139
5d655459db85
refactor shader management - resolves #684
Mike Becker <universe@uap-core.de>
parents:
137
diff
changeset
|
105 | |
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
|
106 | 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
|
107 | } else { |
92 | 108 | asc_error("glewInit failed: %s", glewGetErrorString(err)); |
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
|
109 | SDL_GL_DeleteContext(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
|
110 | 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
|
111 | } |
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
112 | } |
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
113 | |
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
114 | 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
|
115 | 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
|
116 | 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
|
117 | |
139
5d655459db85
refactor shader management - resolves #684
Mike Becker <universe@uap-core.de>
parents:
137
diff
changeset
|
118 | cxListFree(ctx->shaders); |
110
29f8d0d586f8
replace mempool with custom cleanup functions
Mike Becker <universe@uap-core.de>
parents:
106
diff
changeset
|
119 | 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
|
120 | |
b3da4096c607
create own compilation unit for GL context - fixes shader not being created per context
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
121 | // destroy the GL context and the 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
|
122 | SDL_GL_DeleteContext(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
|
123 | 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
|
124 | } |
110
29f8d0d586f8
replace mempool with custom cleanup functions
Mike Becker <universe@uap-core.de>
parents:
106
diff
changeset
|
125 | |
29f8d0d586f8
replace mempool with custom cleanup functions
Mike Becker <universe@uap-core.de>
parents:
106
diff
changeset
|
126 | 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:
106
diff
changeset
|
127 | 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:
106
diff
changeset
|
128 | data->type = 1; |
29f8d0d586f8
replace mempool with custom cleanup functions
Mike Becker <universe@uap-core.de>
parents:
106
diff
changeset
|
129 | data->f1 = func; |
29f8d0d586f8
replace mempool with custom cleanup functions
Mike Becker <universe@uap-core.de>
parents:
106
diff
changeset
|
130 | } |
29f8d0d586f8
replace mempool with custom cleanup functions
Mike Becker <universe@uap-core.de>
parents:
106
diff
changeset
|
131 | |
29f8d0d586f8
replace mempool with custom cleanup functions
Mike Becker <universe@uap-core.de>
parents:
106
diff
changeset
|
132 | 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:
106
diff
changeset
|
133 | 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:
106
diff
changeset
|
134 | data->type = 2; |
29f8d0d586f8
replace mempool with custom cleanup functions
Mike Becker <universe@uap-core.de>
parents:
106
diff
changeset
|
135 | data->f2 = func; |
29f8d0d586f8
replace mempool with custom cleanup functions
Mike Becker <universe@uap-core.de>
parents:
106
diff
changeset
|
136 | data->memory = memory; |
29f8d0d586f8
replace mempool with custom cleanup functions
Mike Becker <universe@uap-core.de>
parents:
106
diff
changeset
|
137 | } |
29f8d0d586f8
replace mempool with custom cleanup functions
Mike Becker <universe@uap-core.de>
parents:
106
diff
changeset
|
138 | |
29f8d0d586f8
replace mempool with custom cleanup functions
Mike Becker <universe@uap-core.de>
parents:
106
diff
changeset
|
139 | 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:
106
diff
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:
106
diff
changeset
|
141 | data->type = 3; |
29f8d0d586f8
replace mempool with custom cleanup functions
Mike Becker <universe@uap-core.de>
parents:
106
diff
changeset
|
142 | data->f3 = func; |
29f8d0d586f8
replace mempool with custom cleanup functions
Mike Becker <universe@uap-core.de>
parents:
106
diff
changeset
|
143 | data->memory = memory; |
29f8d0d586f8
replace mempool with custom cleanup functions
Mike Becker <universe@uap-core.de>
parents:
106
diff
changeset
|
144 | data->additional_data = additional_data; |
29f8d0d586f8
replace mempool with custom cleanup functions
Mike Becker <universe@uap-core.de>
parents:
106
diff
changeset
|
145 | } |