aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJorge Ruesga <jorge@ruesga.com>2013-10-23 00:58:33 +0200
committerJorge Ruesga <jorge@ruesga.com>2013-10-23 00:58:33 +0200
commita2bac48af7640a2cdd90e2c6f40c594c93854eb1 (patch)
tree3d23d117e65fc46c466cde853d5e0dad131d8c13 /src
parent197b8ffbf04fbaf61821aab295390e5cbdec6f9c (diff)
downloadandroid_packages_wallpapers_PhotoPhase-a2bac48af7640a2cdd90e2c6f40c594c93854eb1.tar.gz
android_packages_wallpapers_PhotoPhase-a2bac48af7640a2cdd90e2c6f40c594c93854eb1.tar.bz2
android_packages_wallpapers_PhotoPhase-a2bac48af7640a2cdd90e2c6f40c594c93854eb1.zip
Force to run discover AsyncTask out of the GLThread
AsyncTask can't create a valid handler in ICS (works in JB+), so we force it to run in a UI thread. Signed-off-by: Jorge Ruesga <jorge@ruesga.com>
Diffstat (limited to 'src')
-rw-r--r--src/com/ruesga/android/wallpapers/photophase/PhotoPhaseRenderer.java2
-rw-r--r--src/com/ruesga/android/wallpapers/photophase/TextureManager.java19
2 files changed, 16 insertions, 5 deletions
diff --git a/src/com/ruesga/android/wallpapers/photophase/PhotoPhaseRenderer.java b/src/com/ruesga/android/wallpapers/photophase/PhotoPhaseRenderer.java
index b68b3b6..b6e09dd 100644
--- a/src/com/ruesga/android/wallpapers/photophase/PhotoPhaseRenderer.java
+++ b/src/com/ruesga/android/wallpapers/photophase/PhotoPhaseRenderer.java
@@ -495,7 +495,7 @@ public class PhotoPhaseRenderer implements GLSurfaceView.Renderer {
// Recycle the current texture manager and create a new one
recycle();
mTextureManager = new TextureManager(
- mContext, mEffectContext, mDispatcher, cc, dimensions);
+ mContext, mHandler, mEffectContext, mDispatcher, cc, dimensions);
}
}
diff --git a/src/com/ruesga/android/wallpapers/photophase/TextureManager.java b/src/com/ruesga/android/wallpapers/photophase/TextureManager.java
index 033ca6c..a21051a 100644
--- a/src/com/ruesga/android/wallpapers/photophase/TextureManager.java
+++ b/src/com/ruesga/android/wallpapers/photophase/TextureManager.java
@@ -24,6 +24,7 @@ import android.media.ThumbnailUtils;
import android.media.effect.Effect;
import android.media.effect.EffectContext;
import android.opengl.GLES20;
+import android.os.Handler;
import android.util.Log;
import android.widget.Toast;
@@ -50,12 +51,13 @@ public class TextureManager implements OnMediaPictureDiscoveredListener {
private static final int QUEUE_SIZE = 3;
final Context mContext;
+ final Handler mHandler;
final Effects mEffects;
final Object mSync;
final List<TextureRequestor> mPendingRequests;
final FixedQueue<GLESTextureInfo> mQueue = new FixedQueue<GLESTextureInfo>(QUEUE_SIZE);
BackgroundPictureLoaderThread mBackgroundTask;
- private final MediaPictureDiscoverer mPictureDiscoverer;
+ /*protected*/ final MediaPictureDiscoverer mPictureDiscoverer;
/*package*/ Rect mScreenDimensions;
/*package*/ Rect mDimensions;
@@ -138,10 +140,11 @@ public class TextureManager implements OnMediaPictureDiscoveredListener {
* @param requestors The number of requestors
* @param screenDimensions The screen dimensions
*/
- public TextureManager(final Context ctx, final EffectContext effectCtx,
+ public TextureManager(final Context ctx, final Handler handler, final EffectContext effectCtx,
GLESSurfaceDispatcher dispatcher, int requestors, Rect screenDimensions) {
super();
mContext = ctx;
+ mHandler = handler;
mEffects = new Effects(effectCtx);
mDispatcher = dispatcher;
mScreenDimensions = screenDimensions;
@@ -202,10 +205,18 @@ public class TextureManager implements OnMediaPictureDiscoveredListener {
*
* @param userRequest If the request was generated by the user
*/
- void reloadMedia(boolean userRequest) {
+ void reloadMedia(final boolean userRequest) {
Log.d(TAG, "Reload media picture data");
// Discovery new media
- mPictureDiscoverer.discover(userRequest);
+ // GLThread doesn't run in the UI thread and AsyncThread can't create a
+ // valid handler in ICS (it's fixed in JB+) so we force to run the async
+ // thread in a valid UI thread
+ mHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ mPictureDiscoverer.discover(userRequest);
+ }
+ });
}
/**