aboutsummaryrefslogtreecommitdiffstats
path: root/c_src/sdl_renderer.c
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2017-12-20 20:03:16 +0100
committerLoïc Hoguin <[email protected]>2017-12-20 20:03:16 +0100
commitb0950785e72d9d59c6fd816c01d203ecb083c663 (patch)
tree38cfae31a019ffe7b90d60dea2f6f01c3830e4b3 /c_src/sdl_renderer.c
parente4f6a3c1f1032f83b25210dea21bbacf4552f8f0 (diff)
downloadesdl2-b0950785e72d9d59c6fd816c01d203ecb083c663.tar.gz
esdl2-b0950785e72d9d59c6fd816c01d203ecb083c663.tar.bz2
esdl2-b0950785e72d9d59c6fd816c01d203ecb083c663.zip
Add the sdl_mouse module implementing half of sdl_mouse.h
The latter half will be part of sdl_cursor. This depends on some changes to nif_helper. The sdl_gl part of the code is probably slithly broken now, the dependency on the window is gone. This will be resolved later on.
Diffstat (limited to 'c_src/sdl_renderer.c')
-rw-r--r--c_src/sdl_renderer.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/c_src/sdl_renderer.c b/c_src/sdl_renderer.c
index 5344199..81e60c4 100644
--- a/c_src/sdl_renderer.c
+++ b/c_src/sdl_renderer.c
@@ -16,8 +16,10 @@
void dtor_Renderer(ErlNifEnv* env, void* obj)
{
- SDL_DestroyRenderer(NIF_RES_GET(Renderer, obj));
- enif_release_resource(NIF_RES_DEP(Renderer, obj));
+ SDL_Renderer* renderer = NIF_RES_GET(Renderer, obj);
+
+ SDL_DestroyRenderer(renderer);
+ esdl2_renderers_remove(renderer);
}
#define RENDERER_FLAGS(F) \
@@ -91,14 +93,16 @@ static int map_to_rect(ErlNifEnv* env, ERL_NIF_TERM map, SDL_Rect* rect)
NIF_CALL_HANDLER(thread_create_renderer)
{
SDL_Renderer* renderer;
+ obj_Renderer* res;
ERL_NIF_TERM term;
renderer = SDL_CreateRenderer(NIF_RES_GET(Window, args[0]), (long)args[1], (long)args[2]);
if (!renderer)
return sdl_error_tuple(env);
- enif_keep_resource(args[0]);
- NIF_RES_TO_TERM_WITH_DEP(Renderer, renderer, term, args[0]);
+ NIF_RES_TO_PTR_AND_TERM(Renderer, renderer, res, term);
+
+ esdl2_renderers_insert(renderer, res, args[0]);
return enif_make_tuple2(env,
atom_ok,