From 74ed95871bc29ae80d5de6abae01aff44222f652 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Thu, 9 Nov 2017 21:57:33 -0800 Subject: [PATCH] Exclude HDR toggle when the device doesn't support it --- .../limelight/preferences/StreamSettings.java | 30 +++++++++++++++++++ app/src/main/res/values/strings.xml | 2 +- app/src/main/res/xml/preferences.xml | 3 +- 3 files changed, 33 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/limelight/preferences/StreamSettings.java b/app/src/main/java/com/limelight/preferences/StreamSettings.java index 67842dae..4a65b3b1 100644 --- a/app/src/main/java/com/limelight/preferences/StreamSettings.java +++ b/app/src/main/java/com/limelight/preferences/StreamSettings.java @@ -2,6 +2,7 @@ package com.limelight.preferences; import android.content.Intent; import android.content.SharedPreferences; +import android.os.Build; import android.os.Bundle; import android.app.Activity; import android.preference.Preference; @@ -9,7 +10,9 @@ import android.preference.PreferenceCategory; import android.preference.PreferenceFragment; import android.preference.PreferenceManager; import android.preference.PreferenceScreen; +import android.view.Display; +import com.limelight.LimeLog; import com.limelight.PcView; import com.limelight.R; import com.limelight.utils.UiHelper; @@ -65,6 +68,33 @@ public class StreamSettings extends Activity { screen.removePreference(category); } + // Remove HDR preference for devices below Nougat + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) { + LimeLog.info("Excluding HDR toggle based on OS"); + PreferenceCategory category = + (PreferenceCategory) findPreference("category_advanced_settings"); + category.removePreference(findPreference("checkbox_enable_hdr")); + } + else { + Display display = getActivity().getWindowManager().getDefaultDisplay(); + Display.HdrCapabilities hdrCaps = display.getHdrCapabilities(); + + // We must now ensure our display is compatible with HDR10 + boolean foundHdr10 = false; + for (int hdrType : hdrCaps.getSupportedHdrTypes()) { + if (hdrType == Display.HdrCapabilities.HDR_TYPE_HDR10) { + foundHdr10 = true; + } + } + + if (!foundHdr10) { + LimeLog.info("Excluding HDR toggle based on display capabilities"); + PreferenceCategory category = + (PreferenceCategory) findPreference("category_advanced_settings"); + category.removePreference(findPreference("checkbox_enable_hdr")); + } + } + // Add a listener to the FPS and resolution preference // so the bitrate can be auto-adjusted Preference pref = findPreference(PreferenceConfiguration.RES_FPS_PREF_STRING); diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a8f156af..205882f7 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -149,6 +149,6 @@ Change H.265 settings H.265 lowers video bandwidth requirements but requires a very recent device Enable HDR (Experimental) - Stream HDR when the game, client display, decoder, and GPU support it + Stream HDR when the game and PC GPU support it. HDR requires a GTX 1000 series GPU or later. diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 562a35da..54366266 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -96,7 +96,8 @@ android:summary="@string/summary_checkbox_list_mode" android:defaultValue="false" /> - +