X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?p=xscreensaver;a=blobdiff_plain;f=android%2Fproject%2Fxscreensaver%2Fsrc%2Forg%2Fjwz%2Fxscreensaver%2FXScreenSaverWallpaper.java;fp=android%2Fproject%2Fxscreensaver%2Fsrc%2Forg%2Fjwz%2Fxscreensaver%2FXScreenSaverWallpaper.java;h=b03c90478fb528f2ea362a48962a0830c95bda49;hp=0000000000000000000000000000000000000000;hb=4361b69d3178d7fc98d0388f9a223af6c2651aba;hpb=d6b0217f2417bd19187f0ebc389d6c5c2233b11c diff --git a/android/project/xscreensaver/src/org/jwz/xscreensaver/XScreenSaverWallpaper.java b/android/project/xscreensaver/src/org/jwz/xscreensaver/XScreenSaverWallpaper.java new file mode 100644 index 00000000..b03c9047 --- /dev/null +++ b/android/project/xscreensaver/src/org/jwz/xscreensaver/XScreenSaverWallpaper.java @@ -0,0 +1,100 @@ +/* -*- Mode: java; indent-tabs-mode: nil; c-basic-offset: 2 -*- + * xscreensaver, Copyright (c) 2016 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + * + * The superclass of every saver's Wallpaper. + * + * Each Wallpaper needs a distinct subclass in order to show up in the list. + * We know which saver we are running by the subclass name; we know which + * API to use by how the subclass calls super(). + */ + +package org.jwz.xscreensaver; + +import android.opengl.GLSurfaceView; +import android.os.Handler; +import android.os.Message; +import android.service.wallpaper.WallpaperService; +import android.view.GestureDetector; +import android.view.SurfaceHolder; +import android.util.Log; +import java.lang.RuntimeException; +import java.lang.Thread; + +public class XScreenSaverWallpaper extends WallpaperService +/*implements GestureDetector.OnGestureListener, + GestureDetector.OnDoubleTapListener, */ { + + /* TODO: Input! */ + + @Override + public Engine onCreateEngine() { + return new XScreenSaverGLEngine(); + } + + class XScreenSaverGLEngine extends Engine + implements Handler.Callback { + + GLSurfaceView glview; + + @Override + public void onSurfaceCreated (SurfaceHolder holder) { + /* Old GLWallpaperService warns against working with a GLSurfaceView + in the Engine constructor. + */ + glview = new GLSurfaceView (XScreenSaverWallpaper.this) { + @Override + public SurfaceHolder getHolder() { + return XScreenSaverGLEngine.this.getSurfaceHolder(); + } + }; + + new XScreenSaverRenderer ( + XScreenSaverRenderer.saverNameOf (XScreenSaverWallpaper.this), + XScreenSaverWallpaper.this, null, this, glview); + // super.onSurfaceCreated(holder); + glview.surfaceCreated(holder); + // glview.requestRender(); + } + + @Override + public void onVisibilityChanged(final boolean visible) { + if (glview != null) { + if (visible) + glview.onResume(); + else + glview.onPause(); + } + } + + /* These aren't necessary...maybe? */ +/* + @Override + public void onSurfaceChanged (SurfaceHolder holder, int format, + int width, int height) { + if (glview) + glview.surfaceChanged(holder, format, width, height); + // super.onSurfaceChanged(holder, format, width, height); + } + + @Override + public void onSurfaceDestroyed (SurfaceHolder holder) { + glview.surfaceDestroyed(holder); + } +*/ + + @Override + public boolean handleMessage (Message msg) { + Log.d ("xscreensaver", msg.obj.toString()); + throw (RuntimeException)msg.obj; + // return false; + } + } +}