From 9500dc3a19466dae5269bf337364396b0a48309c Mon Sep 17 00:00:00 2001 From: Jorge Ruesga Date: Fri, 7 Nov 2014 01:25:20 +0100 Subject: photophase: restart lwp service on bad egl context This patch contains some fixes for bad egl context detection and other NPE and lint fixes Change-Id: I47c4348770dc72f768df4bea27c7817d1ec10c42 Signed-off-by: Jorge Ruesga --- res/layout/color_picker_pref_item.xml | 2 +- .../wallpapers/photophase/AndroidHelper.java | 18 ++++++++++++++++++ .../wallpapers/photophase/PhotoPhaseRenderer.java | 18 ++++++++++++++++++ .../photophase/preferences/ChoosePicturesFragment.java | 2 +- 4 files changed, 38 insertions(+), 2 deletions(-) diff --git a/res/layout/color_picker_pref_item.xml b/res/layout/color_picker_pref_item.xml index f299d0e..65f51b7 100644 --- a/res/layout/color_picker_pref_item.xml +++ b/res/layout/color_picker_pref_item.xml @@ -19,7 +19,7 @@ android:layout_height="32dp" android:background="@android:color/darker_gray"> PhotoPhaseRenderer * @@ -314,6 +322,11 @@ public class PhotoPhaseRenderer implements GLSurfaceView.Renderer { } else { mDispatcher.setRenderMode(GLSurfaceView.RENDERMODE_CONTINUOUSLY); } + + // Set a watchdog to detect EGL bad context and restart the wallpaper + if (!mIsPreview) { + mHandler.postDelayed(mEGLContextWatchDog, 1000L); + } } /** @@ -709,6 +722,11 @@ public class PhotoPhaseRenderer implements GLSurfaceView.Renderer { */ @Override public void onDrawFrame(GL10 glUnused) { + // Remove the EGL context watchdog + if (!mIsPreview) { + mHandler.removeCallbacks(mEGLContextWatchDog); + } + // Set the projection, view and model GLES20.glViewport(0, -mStatusBarHeight, mWidth, mHeight); Matrix.setLookAtM(mVMatrix, 0, 0.0f, 0.0f, -1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f); diff --git a/src/org/cyanogenmod/wallpapers/photophase/preferences/ChoosePicturesFragment.java b/src/org/cyanogenmod/wallpapers/photophase/preferences/ChoosePicturesFragment.java index f83c392..fa9c637 100644 --- a/src/org/cyanogenmod/wallpapers/photophase/preferences/ChoosePicturesFragment.java +++ b/src/org/cyanogenmod/wallpapers/photophase/preferences/ChoosePicturesFragment.java @@ -478,7 +478,7 @@ public class ChoosePicturesFragment extends PreferenceFragment private void restoreData() { // Restore and the albums the selection mSelectedAlbums = new HashSet(mOriginalSelectedAlbums); - int count = mAlbums.size(); + int count = Math.min(mAlbums.size(), mOriginalAlbums.size()); for (int i = 0; i < count ; i++) { Album album = mAlbums.get(i); Album originalAlbum = mOriginalAlbums.get(i); -- cgit v1.2.3