diff options
author | Loïc Hoguin <[email protected]> | 2014-04-03 11:24:59 +0200 |
---|---|---|
committer | Loïc Hoguin <[email protected]> | 2014-04-03 11:24:59 +0200 |
commit | 40344743774a8e56d60427fc4827883a77880324 (patch) | |
tree | 07b2076ab2ace29f1c0423240bf671979a681b50 /c_src | |
parent | 00114c813b6c6829dcf3b6eedc6b45803b31c808 (diff) | |
download | esdl2-40344743774a8e56d60427fc4827883a77880324.tar.gz esdl2-40344743774a8e56d60427fc4827883a77880324.tar.bz2 esdl2-40344743774a8e56d60427fc4827883a77880324.zip |
Add sdl_window:create_window_and_renderer/3
Diffstat (limited to 'c_src')
-rw-r--r-- | c_src/esdl2.h | 3 | ||||
-rw-r--r-- | c_src/sdl_window.c | 34 |
2 files changed, 36 insertions, 1 deletions
diff --git a/c_src/esdl2.h b/c_src/esdl2.h index 7a5346d..390d771 100644 --- a/c_src/esdl2.h +++ b/c_src/esdl2.h @@ -149,7 +149,8 @@ F(get_version, 0) \ F(get_revision, 0) \ /* sdl_window */ \ - F(create_window, 6) + F(create_window, 6) \ + F(create_window_and_renderer, 3) \ // Generated declarations for the NIF. 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); +} |