diff options
author | Jorge Ruesga <jorge@ruesga.com> | 2013-08-06 01:47:05 +0200 |
---|---|---|
committer | Jorge Ruesga <jorge@ruesga.com> | 2013-08-06 01:47:05 +0200 |
commit | 6ab3912f76d8886ccfc88def25c18819a0594f07 (patch) | |
tree | b18b0800e82bdf4251c2bee8d892fcdfa9baf553 /src/org/cyanogenmod/wallpapers/photophase/PhotoPhaseRenderer.java | |
parent | 660adfa9453ada61b8753dcac1adc5b9b0972b62 (diff) | |
download | android_packages_wallpapers_PhotoPhase-6ab3912f76d8886ccfc88def25c18819a0594f07.tar.gz android_packages_wallpapers_PhotoPhase-6ab3912f76d8886ccfc88def25c18819a0594f07.tar.bz2 android_packages_wallpapers_PhotoPhase-6ab3912f76d8886ccfc88def25c18819a0594f07.zip |
Support fot GPU image effects (#2)
Initial support of android.media.effects.
Note: Transitions are broken now, and must be fixed
Signed-off-by: Jorge Ruesga <jorge@ruesga.com>
Diffstat (limited to 'src/org/cyanogenmod/wallpapers/photophase/PhotoPhaseRenderer.java')
-rw-r--r-- | src/org/cyanogenmod/wallpapers/photophase/PhotoPhaseRenderer.java | 36 |
1 files changed, 25 insertions, 11 deletions
diff --git a/src/org/cyanogenmod/wallpapers/photophase/PhotoPhaseRenderer.java b/src/org/cyanogenmod/wallpapers/photophase/PhotoPhaseRenderer.java index c1b40e7..5c2e2bf 100644 --- a/src/org/cyanogenmod/wallpapers/photophase/PhotoPhaseRenderer.java +++ b/src/org/cyanogenmod/wallpapers/photophase/PhotoPhaseRenderer.java @@ -27,6 +27,7 @@ import android.content.res.Configuration; import android.content.res.Resources.NotFoundException; import android.graphics.PointF; import android.graphics.Rect; +import android.media.effect.EffectContext; import android.net.Uri; import android.opengl.GLES20; import android.opengl.GLException; @@ -56,19 +57,20 @@ public class PhotoPhaseRenderer implements GLSurfaceView.Renderer { private final long mInstance; private static long sInstances; - final Context mContext; + /*package*/ final Context mContext; + /*package*/ EffectContext mEffectContext; private final Handler mHandler; - final GLESSurfaceDispatcher mDispatcher; - TextureManager mTextureManager; + /*package*/ final GLESSurfaceDispatcher mDispatcher; + /*package*/ TextureManager mTextureManager; - PhotoPhaseWallpaperWorld mWorld; - ColorShape mOverlay; + /*package*/ PhotoPhaseWallpaperWorld mWorld; + /*package*/ ColorShape mOverlay; - long mLastRunningTransition; + /*package*/ long mLastRunningTransition; - int mWidth = -1; - int mHeight = -1; - int mMeasuredHeight = -1; + /*package*/ int mWidth = -1; + /*package*/ int mHeight = -1; + /*package*/ int mMeasuredHeight = -1; private final float[] mMVPMatrix = new float[16]; private final float[] mProjMatrix = new float[16]; @@ -76,7 +78,7 @@ public class PhotoPhaseRenderer implements GLSurfaceView.Renderer { private final Object mDrawing = new Object(); - final Object mMediaSync = new Object(); + /*package*/ final Object mMediaSync = new Object(); private PendingIntent mMediaScanIntent; private final BroadcastReceiver mSettingsChangedReceiver = new BroadcastReceiver() { @@ -216,6 +218,10 @@ public class PhotoPhaseRenderer implements GLSurfaceView.Renderer { // Register a receiver to listen for media reload request mContext.unregisterReceiver(mSettingsChangedReceiver); recycle(); + if (mEffectContext != null) { + mEffectContext.release(); + } + mEffectContext = null; mWidth = -1; mHeight = -1; mMeasuredHeight = -1; @@ -401,6 +407,12 @@ public class PhotoPhaseRenderer implements GLSurfaceView.Renderer { GLES20.glDepthFunc(GLES20.GL_LEQUAL); GLESUtil.glesCheckError("glDepthFunc"); + // Create an effect context + if (mEffectContext != null) { + mEffectContext.release(); + } + mEffectContext = EffectContext.createWithCurrentGlContext(); + // Create the texture manager and recycle the old one if (mTextureManager == null) { // Precalculate the window size for the TextureManager. In onSurfaceChanged @@ -415,8 +427,10 @@ public class PhotoPhaseRenderer implements GLSurfaceView.Renderer { ? PreferencesProvider.Preferences.Layout.getPortraitDisposition().size() : PreferencesProvider.Preferences.Layout.getLandscapeDisposition().size(); + // Recycle the current texture manager and create a new one recycle(); - mTextureManager = new TextureManager(mContext, mDispatcher, cc, dimensions); + mTextureManager = new TextureManager( + mContext, mEffectContext, mDispatcher, cc, dimensions); } } |