]> git.sesse.net Git - nageru/blobdiff - nageru/theme.cpp
Add get_frame_width() and get_frame_height() to the signals given to the theme, which...
[nageru] / nageru / theme.cpp
index 63070da78bd6a82fe16cdabe6e2085607224cfa9..ec8f43191aefb0f31d3bef4aae0e7c1b588cba81 100644 (file)
@@ -636,6 +636,20 @@ int InputStateInfo_get_height(lua_State* L)
        return 1;
 }
 
+int InputStateInfo_get_frame_height(lua_State* L)
+{
+       assert(lua_gettop(L) == 2);
+       InputStateInfo *input_state_info = get_input_state_info(L, 1);
+       Theme *theme = get_theme_updata(L);
+       int signal_num = theme->map_signal(luaL_checknumber(L, 2));
+       unsigned height = input_state_info->last_height[signal_num];
+       if (input_state_info->last_interlaced[signal_num]) {
+               height *= 2;
+       }
+       lua_pushnumber(L, height);
+       return 1;
+}
+
 int InputStateInfo_get_interlaced(lua_State* L)
 {
        assert(lua_gettop(L) == 2);
@@ -745,10 +759,10 @@ int InputStateInfo_get_human_readable_resolution(lua_State* L)
        string str;
        if (!input_state_info->last_is_connected[signal_num]) {
                str = "disconnected";
-       } else if (input_state_info->last_height[signal_num]) {
+       } else if (input_state_info->last_height[signal_num] <= 0) {
                str = "no signal";
        } else if (!input_state_info->last_has_signal[signal_num]) {
-               if (input_state_info->last_height[signal_num]) {
+               if (input_state_info->last_height[signal_num] == 525) {
                        // Special mode for the USB3 cards.
                        str = "no signal";
                } else {
@@ -979,6 +993,8 @@ const luaL_Reg LiftGammaGainEffect_funcs[] = {
 const luaL_Reg InputStateInfo_funcs[] = {
        { "get_width", InputStateInfo_get_width },
        { "get_height", InputStateInfo_get_height },
+       { "get_frame_width", InputStateInfo_get_width },  // Same as get_width().
+       { "get_frame_height", InputStateInfo_get_frame_height },
        { "get_interlaced", InputStateInfo_get_interlaced },
        { "get_has_signal", InputStateInfo_get_has_signal },
        { "get_is_connected", InputStateInfo_get_is_connected },
@@ -1768,9 +1784,9 @@ void destroy(T &ref)
 Theme::MenuEntry::~MenuEntry()
 {
        if (is_submenu) {
-               luaL_unref(entry.L, LUA_REGISTRYINDEX, entry.lua_ref);
-       } else {
                destroy(submenu);
+       } else {
+               luaL_unref(entry.L, LUA_REGISTRYINDEX, entry.lua_ref);
        }
 }
 
@@ -1822,9 +1838,7 @@ int Theme::set_theme_menu(lua_State *L)
        for (int i = 1; i <= num_elements; ++i) {
                root_menu.emplace_back(create_theme_menu_entry(L, i));
        }
-       fprintf(stderr, "now creating a new one\n");
        theme_menu.reset(new MenuEntry("", move(root_menu)));
-       fprintf(stderr, "DONE reset\n");
 
        lua_pop(L, num_elements);
        assert(lua_gettop(L) == 0);