aboutsummaryrefslogtreecommitdiffstats
path: root/c_src/sdl_window.c
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2014-04-03 11:24:59 +0200
committerLoïc Hoguin <[email protected]>2014-04-03 11:24:59 +0200
commit40344743774a8e56d60427fc4827883a77880324 (patch)
tree07b2076ab2ace29f1c0423240bf671979a681b50 /c_src/sdl_window.c
parent00114c813b6c6829dcf3b6eedc6b45803b31c808 (diff)
downloadesdl2-40344743774a8e56d60427fc4827883a77880324.tar.gz
esdl2-40344743774a8e56d60427fc4827883a77880324.tar.bz2
esdl2-40344743774a8e56d60427fc4827883a77880324.zip
Add sdl_window:create_window_and_renderer/3
Diffstat (limited to 'c_src/sdl_window.c')
-rw-r--r--c_src/sdl_window.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/c_src/sdl_window.c b/c_src/sdl_window.c
index 9319270..aed5b8b 100644
--- a/c_src/sdl_window.c
+++ b/c_src/sdl_window.c
@@ -75,3 +75,37 @@ NIF_FUNCTION(create_window)
return nif_thread_call(env, thread_create_window, 6,
title, x, y, w, h, flags);
}
+
+// create_window_and_renderer
+
+NIF_CALL_HANDLER(thread_create_window_and_renderer)
+{
+ SDL_Window* window;
+ SDL_Renderer* renderer;
+ ERL_NIF_TERM wterm, rterm;
+
+ if (0 != SDL_CreateWindowAndRenderer((long)args[0], (long)args[1], (long)args[2], &window, &renderer))
+ return sdl_error_tuple(env);
+
+ NIF_RES_TO_TERM(Window, window, wterm);
+ NIF_RES_TO_TERM(Renderer, renderer, rterm);
+
+ return enif_make_tuple3(env,
+ atom_ok,
+ wterm,
+ rterm
+ );
+}
+
+NIF_FUNCTION(create_window_and_renderer)
+{
+ int w, h;
+ Uint32 flags = 0;
+
+ BADARG_IF(!enif_get_int(env, argv[0], &w));
+ BADARG_IF(!enif_get_int(env, argv[1], &h));
+ BADARG_IF(!list_to_window_flags(env, argv[2], &flags));
+
+ return nif_thread_call(env, thread_create_window_and_renderer, 3,
+ w, h, flags);
+}