mirror of
https://github.com/yuliskov/SmartTube.git
synced 2026-01-26 00:20:37 -06:00
refactor
This commit is contained in:
@@ -2,6 +2,7 @@ package com.liskovsoft.smartyoutubetv2.common.autoframerate;
|
||||
|
||||
import android.app.Activity;
|
||||
import com.liskovsoft.sharedutils.mylogger.Log;
|
||||
import com.liskovsoft.smartyoutubetv2.common.autoframerate.internal.DisplayHolder.Mode;
|
||||
import com.liskovsoft.smartyoutubetv2.common.autoframerate.internal.DisplaySyncHelper;
|
||||
import com.liskovsoft.smartyoutubetv2.common.autoframerate.internal.DisplaySyncHelper.AutoFrameRateListener;
|
||||
import com.liskovsoft.smartyoutubetv2.common.autoframerate.internal.DisplaySyncHelperAlt;
|
||||
@@ -31,7 +32,7 @@ public class AutoFrameRateHelper {
|
||||
mFrameRateMapping.put(60f, 59.94f);
|
||||
}
|
||||
|
||||
public void apply(FormatItem format) {
|
||||
public void apply(FormatItem format, boolean force) {
|
||||
if (mActivity == null) {
|
||||
Log.e(TAG, "Activity in null. exiting...");
|
||||
return;
|
||||
@@ -53,12 +54,16 @@ public class AutoFrameRateHelper {
|
||||
} else {
|
||||
mPrevCall = System.currentTimeMillis();
|
||||
}
|
||||
|
||||
|
||||
float frameRate = correctFps(format.getFrameRate());
|
||||
int width = format.getWidth();
|
||||
|
||||
Log.d(TAG, String.format("Applying mode change... Video fps: %s, width: %s, height: %s", frameRate, width, format.getHeight()));
|
||||
mSyncHelper.syncDisplayMode(mActivity.getWindow(), width, frameRate);
|
||||
mSyncHelper.syncDisplayMode(mActivity.getWindow(), width, frameRate, force);
|
||||
}
|
||||
|
||||
public void apply(FormatItem format) {
|
||||
apply(format, false);
|
||||
}
|
||||
|
||||
public boolean isSupported() {
|
||||
@@ -86,7 +91,7 @@ public class AutoFrameRateHelper {
|
||||
mSyncHelper.saveOriginalState();
|
||||
}
|
||||
|
||||
public void restoreOriginalState() {
|
||||
public void restoreOriginalState(boolean force) {
|
||||
if (!isSupported()) {
|
||||
Log.d(TAG, "restoreOriginalState: autoframerate not enabled... exiting...");
|
||||
return;
|
||||
@@ -94,11 +99,15 @@ public class AutoFrameRateHelper {
|
||||
|
||||
Log.d(TAG, "Restoring original mode...");
|
||||
|
||||
boolean result = mSyncHelper.restoreOriginalState(mActivity.getWindow());
|
||||
boolean result = mSyncHelper.restoreOriginalState(mActivity.getWindow(), force);
|
||||
|
||||
Log.d(TAG, "Restore mode result: " + result);
|
||||
}
|
||||
|
||||
public void restoreOriginalState() {
|
||||
restoreOriginalState(false);
|
||||
}
|
||||
|
||||
public void setListener(AutoFrameRateListener listener) {
|
||||
mSyncHelper.setListener(listener);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
package com.liskovsoft.smartyoutubetv2.common.autoframerate;
|
||||
|
||||
import android.app.Activity;
|
||||
import com.liskovsoft.smartyoutubetv2.common.autoframerate.internal.DisplaySyncHelper;
|
||||
import com.liskovsoft.smartyoutubetv2.common.autoframerate.internal.DisplaySyncHelperAlt;
|
||||
|
||||
public class ModeSyncManager {
|
||||
private static ModeSyncManager sInstance;
|
||||
private final DisplaySyncHelper mDisplaySyncHelper;
|
||||
|
||||
public ModeSyncManager(Activity activity) {
|
||||
mDisplaySyncHelper = new DisplaySyncHelperAlt(activity);
|
||||
}
|
||||
|
||||
public static ModeSyncManager instance(Activity activity) {
|
||||
if (sInstance == null) {
|
||||
sInstance = new ModeSyncManager(activity);
|
||||
}
|
||||
|
||||
return sInstance;
|
||||
}
|
||||
|
||||
public void save(Activity activity) {
|
||||
mDisplaySyncHelper.setContext(activity);
|
||||
mDisplaySyncHelper.saveCurrentState();
|
||||
}
|
||||
|
||||
public void restore(Activity activity) {
|
||||
mDisplaySyncHelper.setContext(activity);
|
||||
mDisplaySyncHelper.restoreCurrentState(activity.getWindow());
|
||||
}
|
||||
}
|
||||
@@ -240,6 +240,10 @@ public class DisplaySyncHelper implements UhdHelperListener {
|
||||
return true;
|
||||
}
|
||||
|
||||
public boolean syncDisplayMode(Window window, int videoWidth, float videoFramerate) {
|
||||
return syncDisplayMode(window, videoWidth, videoFramerate, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tries to find best suited display params for the video
|
||||
* @param window window object
|
||||
@@ -247,7 +251,7 @@ public class DisplaySyncHelper implements UhdHelperListener {
|
||||
* @param videoFramerate framerate of the video
|
||||
* @return
|
||||
*/
|
||||
public boolean syncDisplayMode(Window window, int videoWidth, float videoFramerate) {
|
||||
public boolean syncDisplayMode(Window window, int videoWidth, float videoFramerate, boolean force) {
|
||||
if (supportsDisplayModeChange() && videoWidth >= 10) {
|
||||
if (mUhdHelper == null) {
|
||||
mUhdHelper = new UhdHelper(mContext);
|
||||
@@ -307,7 +311,7 @@ public class DisplaySyncHelper implements UhdHelperListener {
|
||||
Log.i(TAG, "Found closer mode: " + closerMode + " for fps " + videoFramerate);
|
||||
Log.i(TAG, "Current mode: " + currentMode);
|
||||
|
||||
if (closerMode.equals(currentMode)) {
|
||||
if (!force && closerMode.equals(currentMode)) {
|
||||
Log.i(TAG, "Do not need to change mode.");
|
||||
|
||||
// NOTE: changed
|
||||
@@ -351,17 +355,27 @@ public class DisplaySyncHelper implements UhdHelperListener {
|
||||
saveState(STATE_CURRENT);
|
||||
}
|
||||
|
||||
public boolean restoreOriginalState(Window window, boolean force) {
|
||||
return restoreState(window, STATE_ORIGINAL, force);
|
||||
}
|
||||
|
||||
public boolean restoreOriginalState(Window window) {
|
||||
return restoreState(window, STATE_ORIGINAL);
|
||||
return restoreOriginalState(window, false);
|
||||
}
|
||||
|
||||
public boolean restoreCurrentState(Window window, boolean force) {
|
||||
return restoreState(window, STATE_CURRENT, force);
|
||||
}
|
||||
|
||||
public boolean restoreCurrentState(Window window) {
|
||||
return restoreState(window, STATE_CURRENT);
|
||||
return restoreState(window, STATE_CURRENT, false);
|
||||
}
|
||||
|
||||
private void saveState(int state) {
|
||||
Mode mode = getUhdHelper().getCurrentMode();
|
||||
|
||||
Log.d(TAG, "Saving mode: " + mode);
|
||||
|
||||
if (mode != null) {
|
||||
switch (state) {
|
||||
case STATE_ORIGINAL:
|
||||
@@ -377,7 +391,7 @@ public class DisplaySyncHelper implements UhdHelperListener {
|
||||
}
|
||||
}
|
||||
|
||||
private boolean restoreState(Window window, int state) {
|
||||
private boolean restoreState(Window window, int state, boolean force) {
|
||||
Log.d(TAG, "Beginning to restore state...");
|
||||
|
||||
Mode modeTmp = null;
|
||||
@@ -392,17 +406,19 @@ public class DisplaySyncHelper implements UhdHelperListener {
|
||||
}
|
||||
|
||||
if (modeTmp == null) {
|
||||
Log.e(TAG, "Can't restore state. Mode is null.");
|
||||
Log.d(TAG, "Can't restore state. Mode is null.");
|
||||
return false;
|
||||
}
|
||||
|
||||
Mode mode = getUhdHelper().getCurrentMode();
|
||||
|
||||
if (modeTmp.equals(mode)) {
|
||||
if (!force && modeTmp.equals(mode)) {
|
||||
Log.d(TAG, "Do not need to restore mode. Current mode is the same as new.");
|
||||
return false;
|
||||
}
|
||||
|
||||
Log.d(TAG, "Restoring mode: " + modeTmp);
|
||||
|
||||
getUhdHelper().setPreferredDisplayModeId(
|
||||
window,
|
||||
modeTmp.getModeId(),
|
||||
@@ -440,9 +456,6 @@ public class DisplaySyncHelper implements UhdHelperListener {
|
||||
|
||||
if (mNewMode != null) {
|
||||
mOriginalMode = mNewMode;
|
||||
|
||||
// NOTE: changed
|
||||
//CommonApplication.getPreferences().setDefaultDisplayMode(UhdHelper.formatMode(mOriginalMode));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -459,5 +472,6 @@ public class DisplaySyncHelper implements UhdHelperListener {
|
||||
|
||||
public void setContext(Context context) {
|
||||
mContext = context;
|
||||
mUhdHelper = null; // uhd helper uses context, so do refresh
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ import android.os.Bundle;
|
||||
import android.view.KeyEvent;
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
import com.liskovsoft.sharedutils.mylogger.Log;
|
||||
import com.liskovsoft.smartyoutubetv2.common.autoframerate.ModeSyncManager;
|
||||
import com.liskovsoft.smartyoutubetv2.common.app.views.ViewManager;
|
||||
import com.liskovsoft.smartyoutubetv2.tv.ui.search.SearchActivity;
|
||||
|
||||
@@ -17,6 +18,7 @@ public abstract class LeanbackActivity extends FragmentActivity {
|
||||
private LongClickManager mLongClickManager;
|
||||
private UriBackgroundManager mBackgroundManager;
|
||||
private ViewManager mViewManager;
|
||||
private ModeSyncManager mModeSyncManager;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
@@ -24,6 +26,7 @@ public abstract class LeanbackActivity extends FragmentActivity {
|
||||
mLongClickManager = new LongClickManager();
|
||||
mBackgroundManager = new UriBackgroundManager(this);
|
||||
mViewManager = ViewManager.instance(this);
|
||||
mModeSyncManager = ModeSyncManager.instance(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -59,6 +62,20 @@ public abstract class LeanbackActivity extends FragmentActivity {
|
||||
mViewManager.addTopActivity(this.getClass());
|
||||
}
|
||||
|
||||
//@Override
|
||||
//protected void onResume() {
|
||||
// super.onResume();
|
||||
//
|
||||
// mModeSyncManager.restore(this);
|
||||
//}
|
||||
|
||||
//@Override
|
||||
//protected void onPause() {
|
||||
// super.onPause();
|
||||
//
|
||||
// mModeSyncManager.save(this);
|
||||
//}
|
||||
|
||||
@Override
|
||||
protected void onStop() {
|
||||
super.onStop();
|
||||
|
||||
Reference in New Issue
Block a user