]> git.vomp.tv Git - vompclient.git/commitdiff
Add disable-hdmi-modechange to runtime config
authorChris Tallon <chris@vomp.tv>
Wed, 22 Feb 2023 16:12:53 +0000 (16:12 +0000)
committerChris Tallon <chris@vomp.tv>
Wed, 22 Feb 2023 16:12:53 +0000 (16:12 +0000)
src/config.cc
src/config.json.sample
src/videoomx.cc

index 8139fe790da699616f960e85494473554d270f3f..9b2c5f854f1dcfe79a657c3b34fc11e42fcb9c92 100644 (file)
@@ -55,6 +55,8 @@ void Config::applyDefaults()
 
   insertInt("server-discovery", "prefer-ipv", 6);
 
+  insertBool("videoomx", "disable-hdmi-modechange", false);
+
   // Not in config.json.sample - VDR login always sets this
   insertInt("subtitles", "default", 0);
 }
index 3448df47c9e2a057c1455237f67640c7ecdd430d..e0f9c2725a9ee60b59bbf73b41fe28ab2040ea53 100644 (file)
@@ -52,7 +52,7 @@
   "input_udp":
   {
     "port": 2000
-  }
+  },
 
   "input_lirc":
   {
     "lirc-remote-name-2":
     {
     }
+  },
+
+  "videoomx":
+  {
+    "disable-hdmi-modechange": false
   }
 }
index 437fc244fa8065de4315108b0551b23f1c8c995e..028c62d9ee75e135a7f306217a88e0976ec60f85 100644 (file)
@@ -33,6 +33,7 @@
 #include "boxstack.h"
 #include "inputman.h"
 #include "util.h"
+#include "config.h"
 
 #include "videoomx.h"
 
@@ -509,18 +510,27 @@ void VideoOMX::selectVideoMode(int interlaced)
                        }
                }
                // InputMan::getInstance()->shutdown(); FIXME FIXME FIXME - disabling this temp, why does this have to run?
-               vc_tv_power_off();
-               if (mymode) {
-                       LogNT::getInstance()->info(TAG, "Switch to optimum mode");
-                       vc_tv_hdmi_power_on_explicit(HDMI_MODE_HDMI,group,mymode->code);
-               } else if (mymode_second_best) {
-                       LogNT::getInstance()->info(TAG, "Switch to close to optimum mode");
-                       vc_tv_hdmi_power_on_explicit(HDMI_MODE_HDMI,group,mymode_second_best->code);
-               } else {
-                       LogNT::getInstance()->info(TAG, "Switch to prefered mode");
-                       vc_tv_hdmi_power_on_best(1920, 1080, target_fps, interlaced ? HDMI_INTERLACED : HDMI_NONINTERLACED,
-                                       static_cast<EDID_MODE_MATCH_FLAG_T>(HDMI_MODE_MATCH_FRAMERATE|HDMI_MODE_MATCH_RESOLUTION|HDMI_MODE_MATCH_SCANMODE));
+
+
+               bool disableHDMIModeChange{false};
+               bool confSuccess = Config::getInstance()->getBool("videoomx", "disable-hdmi-modechange", disableHDMIModeChange);
+
+               if (!(confSuccess && disableHDMIModeChange))
+               {
+                 vc_tv_power_off();
+                 if (mymode) {
+                         LogNT::getInstance()->info(TAG, "Switch to optimum mode");
+                         vc_tv_hdmi_power_on_explicit(HDMI_MODE_HDMI,group,mymode->code);
+                 } else if (mymode_second_best) {
+                         LogNT::getInstance()->info(TAG, "Switch to close to optimum mode");
+                         vc_tv_hdmi_power_on_explicit(HDMI_MODE_HDMI,group,mymode_second_best->code);
+                 } else {
+                         LogNT::getInstance()->info(TAG, "Switch to prefered mode");
+                         vc_tv_hdmi_power_on_best(1920, 1080, target_fps, interlaced ? HDMI_INTERLACED : HDMI_NONINTERLACED,
+                                         static_cast<EDID_MODE_MATCH_FLAG_T>(HDMI_MODE_MATCH_FRAMERATE|HDMI_MODE_MATCH_RESOLUTION|HDMI_MODE_MATCH_SCANMODE));
+                 }
                }
+
                hdmi=true;
                outputinterlaced=interlaced;
        } else {