diff options
author | jruesga <jorge@ruesga.com> | 2013-07-01 02:42:54 +0200 |
---|---|---|
committer | jruesga <jorge@ruesga.com> | 2013-07-01 02:42:54 +0200 |
commit | f29d68d929061ccbb982019c5020be721bbef862 (patch) | |
tree | 24ce41fb0dd7f942ca9dbe956fe93fe836da66c2 /src/org/cyanogenmod/wallpapers/photophase/EGLWallpaperService.java | |
download | android_packages_wallpapers_PhotoPhase-f29d68d929061ccbb982019c5020be721bbef862.tar.gz android_packages_wallpapers_PhotoPhase-f29d68d929061ccbb982019c5020be721bbef862.tar.bz2 android_packages_wallpapers_PhotoPhase-f29d68d929061ccbb982019c5020be721bbef862.zip |
Initial commit
Signed-off-by: jruesga <jorge@ruesga.com>
Diffstat (limited to 'src/org/cyanogenmod/wallpapers/photophase/EGLWallpaperService.java')
-rw-r--r-- | src/org/cyanogenmod/wallpapers/photophase/EGLWallpaperService.java | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/src/org/cyanogenmod/wallpapers/photophase/EGLWallpaperService.java b/src/org/cyanogenmod/wallpapers/photophase/EGLWallpaperService.java new file mode 100644 index 0000000..9effe8c --- /dev/null +++ b/src/org/cyanogenmod/wallpapers/photophase/EGLWallpaperService.java @@ -0,0 +1,117 @@ +/* + * Copyright (C) 2013 The CyanogenMod Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.cyanogenmod.wallpapers.photophase; + +import android.content.Context; +import android.opengl.GLSurfaceView; +import android.service.wallpaper.WallpaperService; +import android.view.SurfaceHolder; + +/** + * An abstract class for using a {@link GLSurfaceView} inside a {@link WallpaperService}. + */ +public abstract class EGLWallpaperService extends WallpaperService { + + /** + * A listener interface for the {@link GLESWallpaperService.GLESEngine} engine class. + */ + public interface EGLEngineListener { + // No methods + } + + /** + * An EGL implementation of {@link android.service.wallpaper.WallpaperService.Engine} that + * uses {@link GLSurfaceView}. + */ + public class EGLEngine extends Engine { + /** + * The internal {@link GLSurfaceView}. + */ + class WallpaperGLSurfaceView extends GLSurfaceView { + + /** + * @see GLSurfaceView + */ + WallpaperGLSurfaceView(Context context) { + super(context); + } + + /** + * {@inheritDoc} + */ + @Override + public SurfaceHolder getHolder() { + return getSurfaceHolder(); + } + + /** + * Should be called when the {@link GLSurfaceView} is not needed anymore. + */ + public void onDestroy() { + super.onDetachedFromWindow(); + } + } + + private WallpaperGLSurfaceView mGlSurfaceView; + + /** + * Method that sets the EGL engine listener + * + * @param listener The EGL engine listener + */ + public void setEGLEngineListener(EGLEngineListener listener) { + // No methods + } + + /** + * {@inheritDoc} + */ + @Override + public void onCreate(SurfaceHolder surfaceHolder) { + super.onCreate(surfaceHolder); + mGlSurfaceView = createWallpaperGLSurfaceView(); + } + + /** + * Method that returns the internal {@link GLSurfaceView} + * + * @return GLSurfaceView The internal {@link GLSurfaceView}. + */ + protected GLSurfaceView getGlSurfaceView() { + return mGlSurfaceView; + } + + /** + * {@inheritDoc} + */ + @Override + public void onDestroy() { + super.onDestroy(); + mGlSurfaceView.onDestroy(); + } + + /** + * Override this method if a {@link GLSurfaceView} wrapper is needed, for example + * if you need implements some eve + * + * @return WallpaperGLSurfaceView The specialized EGL {@link GLSurfaceView}. + */ + public WallpaperGLSurfaceView createWallpaperGLSurfaceView() { + return new WallpaperGLSurfaceView(EGLWallpaperService.this); + } + } +} |