aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2014-04-04 17:20:21 +0200
committerLoïc Hoguin <[email protected]>2014-04-04 17:20:21 +0200
commit81a8df3374e830acba184099f243e42174c02e2a (patch)
treecd9bba4a0232e8116ec621b4db9f64afc0d6c955
parentecf0289776569cf9cf00accbc7cbcfe3ffa9a724 (diff)
downloadesdl2-81a8df3374e830acba184099f243e42174c02e2a.tar.gz
esdl2-81a8df3374e830acba184099f243e42174c02e2a.tar.bz2
esdl2-81a8df3374e830acba184099f243e42174c02e2a.zip
Add sdl_renderer:get_output_size/1
-rw-r--r--c_src/esdl2.h1
-rw-r--r--c_src/sdl_renderer.c28
-rw-r--r--src/esdl2.erl4
-rw-r--r--src/sdl_renderer.erl8
4 files changed, 41 insertions, 0 deletions
diff --git a/c_src/esdl2.h b/c_src/esdl2.h
index f0e54c9..34871be 100644
--- a/c_src/esdl2.h
+++ b/c_src/esdl2.h
@@ -152,6 +152,7 @@
F(get_num_render_drivers, 0) \
F(get_render_draw_blend_mode, 1) \
F(get_render_draw_color, 1) \
+ F(get_render_output_size, 1) \
F(render_clear, 1) \
F(render_copy, 4) \
F(render_present, 1) \
diff --git a/c_src/sdl_renderer.c b/c_src/sdl_renderer.c
index 7787a3c..e3155ae 100644
--- a/c_src/sdl_renderer.c
+++ b/c_src/sdl_renderer.c
@@ -163,6 +163,34 @@ NIF_FUNCTION(get_render_draw_color)
NIF_RES_GET(Renderer, renderer_res));
}
+// get_render_output_size
+
+NIF_CALL_HANDLER(thread_get_render_output_size)
+{
+ int w, h;
+
+ if (SDL_GetRendererOutputSize(args[0], &w, &h))
+ return sdl_error_tuple(env);
+
+ return enif_make_tuple2(env,
+ atom_ok,
+ enif_make_tuple2(env,
+ enif_make_int(env, w),
+ enif_make_int(env, h)
+ )
+ );
+}
+
+NIF_FUNCTION(get_render_output_size)
+{
+ void* renderer_res;
+
+ BADARG_IF(!enif_get_resource(env, argv[0], res_Renderer, &renderer_res));
+
+ return nif_thread_call(env, thread_get_render_output_size, 1,
+ NIF_RES_GET(Renderer, renderer_res));
+}
+
// render_clear
NIF_CALL_HANDLER(thread_render_clear)
diff --git a/src/esdl2.erl b/src/esdl2.erl
index a64ee4c..c0ca182 100644
--- a/src/esdl2.erl
+++ b/src/esdl2.erl
@@ -57,6 +57,7 @@
-export([get_num_render_drivers/0]).
-export([get_render_draw_blend_mode/1]).
-export([get_render_draw_color/1]).
+-export([get_render_output_size/1]).
-export([render_clear/1]).
-export([render_copy/4]).
-export([render_present/1]).
@@ -219,6 +220,9 @@ get_render_draw_blend_mode(_) ->
get_render_draw_color(_) ->
erlang:nif_error({not_loaded, ?MODULE}).
+get_render_output_size(_) ->
+ erlang:nif_error({not_loaded, ?MODULE}).
+
render_clear(_) ->
erlang:nif_error({not_loaded, ?MODULE}).
diff --git a/src/sdl_renderer.erl b/src/sdl_renderer.erl
index 01bc314..7d56f19 100644
--- a/src/sdl_renderer.erl
+++ b/src/sdl_renderer.erl
@@ -18,6 +18,7 @@
-export([count_drivers/0]).
-export([get_draw_blend_mode/1]).
-export([get_draw_color/1]).
+-export([get_output_size/1]).
-export([clear/1]).
-export([copy/2]).
-export([copy/4]).
@@ -47,6 +48,13 @@ get_draw_color(Renderer) ->
Mode
end.
+get_output_size(Renderer) ->
+ esdl2:get_render_output_size(Renderer),
+ receive {'_nif_thread_ret_', Ret} ->
+ {ok, Mode} = Ret,
+ Mode
+ end.
+
clear(Renderer) ->
esdl2:render_clear(Renderer),
receive {'_nif_thread_ret_', Ret} -> Ret end.