diff options
3 files changed, 29 insertions, 7 deletions
diff --git a/res/values/arrays.xml b/res/values/arrays.xml index df43a31..9ab1b17 100644 --- a/res/values/arrays.xml +++ b/res/values/arrays.xml @@ -86,6 +86,13 @@ <item>15000</item> <item>30000</item> <item>60000</item> + <item>120000</item> + <item>240000</item> + <item>300000</item> + <item>600000</item> + <item>1800000</item> + <item>3600000</item> + <item>86400000</item> </integer-array> <string-array name="effects_labels" translatable="false"> diff --git a/src/org/cyanogenmod/wallpapers/photophase/PhotoPhaseRenderer.java b/src/org/cyanogenmod/wallpapers/photophase/PhotoPhaseRenderer.java index 7fb467f..bbb71d1 100644 --- a/src/org/cyanogenmod/wallpapers/photophase/PhotoPhaseRenderer.java +++ b/src/org/cyanogenmod/wallpapers/photophase/PhotoPhaseRenderer.java @@ -80,6 +80,7 @@ public class PhotoPhaseRenderer implements GLSurfaceView.Renderer { OopsShape mOopsShape; long mLastRunningTransition; + long mLastTransition; private long mLastTouchTime; private static final long TOUCH_BARRIER_TIME = 1000L; @@ -167,6 +168,7 @@ public class PhotoPhaseRenderer implements GLSurfaceView.Renderer { // Select a new transition mWorld.selectRandomTransition(); mLastRunningTransition = System.currentTimeMillis(); + mLastTransition = System.currentTimeMillis(); // Now force continuously render while transition is applied mDispatcher.setRenderMode(GLSurfaceView.RENDERMODE_CONTINUOUSLY); @@ -589,6 +591,8 @@ public class PhotoPhaseRenderer implements GLSurfaceView.Renderer { mMeasuredHeight = -1; mStatusBarHeight = 0; + mLastTransition = System.currentTimeMillis(); + // We have a 2d (fake) scenario, disable all unnecessary tests. Deep are // necessary for some 3d effects GLES20.glDisable(GL10.GL_DITHER); @@ -725,15 +729,16 @@ public class PhotoPhaseRenderer implements GLSurfaceView.Renderer { // Check if we have some pending transition or transition has // exceed its timeout synchronized (mDrawing) { - if (Preferences.General.Transitions.getTransitionInterval() > 0) { + final int interval = Preferences.General.Transitions.getTransitionInterval(); + if (interval > 0) { if (!mWorld.hasRunningTransition() || isTransitionTimeoutFired()) { mDispatcher.setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY); // Now start a delayed thread to generate the next effect deselectCurrentTransition(); - mLastRunningTransition = 0; - mHandler.postDelayed(mTransitionThread, - Preferences.General.Transitions.getTransitionInterval()); + long diff = System.currentTimeMillis() - mLastTransition; + long delay = Math.max(200, interval - diff); + mHandler.postDelayed(mTransitionThread, delay); } } else { // Just display the initial frames and never make transitions diff --git a/src/org/cyanogenmod/wallpapers/photophase/preferences/GeneralPreferenceFragment.java b/src/org/cyanogenmod/wallpapers/photophase/preferences/GeneralPreferenceFragment.java index e559ba7..71f3190 100644 --- a/src/org/cyanogenmod/wallpapers/photophase/preferences/GeneralPreferenceFragment.java +++ b/src/org/cyanogenmod/wallpapers/photophase/preferences/GeneralPreferenceFragment.java @@ -120,6 +120,8 @@ public class GeneralPreferenceFragment extends PreferenceFragment { final String formatDisabled = getString(R.string.format_disabled); final String formatSeconds = getString(R.string.format_seconds); final String formatMinutes = getString(R.string.format_minutes); + final String formatHours = getString(R.string.format_hours); + final String formatDays = getString(R.string.format_days); final String formatDim = getString(R.string.format_dim); // Change the preference manager @@ -174,10 +176,18 @@ public class GeneralPreferenceFragment extends PreferenceFragment { // Seconds mTransitionsInterval.setFormat(formatSeconds); return String.valueOf(interval / 1000); + } else if (interval < 3600000) { + // Minutes + mTransitionsInterval.setFormat(formatMinutes); + return String.valueOf(interval / 1000 / 60); + } else if (interval < 86400000) { + // Hours + mTransitionsInterval.setFormat(formatHours); + return String.valueOf(interval / 1000 / 60 / 60); } - // Minutes - mTransitionsInterval.setFormat(formatMinutes); - return String.valueOf(interval / 1000 / 60); + // Days + mTransitionsInterval.setFormat(formatDays); + return String.valueOf(interval / 1000 / 60 / 60 / 24); } }); mTransitionsInterval.setOnPreferenceChangeListener(mOnChangeListener); |