Android Open Source - Sertimus Draw Thread






From Project

Back to project page Sertimus.

License

The source code is released under:

GNU General Public License

If you think the Android project Sertimus listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*  Sertimus - A live wallpaper featuring a cute Chao.
  //  w w w  .jav  a 2s .  c o  m
    Copyright (C) 2013  Kevin Negrin

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>. */

//  DrawThread.java - Thread for drawing the state of the currently active MainCanvas object.

package gameaddict30.wallpaper.sertimus;

import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Typeface;
import android.view.SurfaceHolder;

public class DrawThread extends Thread {
  private MainCanvas canv;
  
  private Object drawLock;
  private boolean isActive = false;
  private SurfaceHolder holder;
  
  private Canvas c = null;
  private Paint p;

  private boolean stillRunning = true;
  
  public DrawThread(MainCanvas canv, Object lock) {
    this.canv = canv;
    this.drawLock = lock;
    this.holder = canv.getHolder();
    
    p = new Paint();
    p.setColor(Color.BLACK);
    p.setTypeface(Typeface.SANS_SERIF);
    p.setTextSize(8f);
    
    start();
  }
  
  public void run() {
    while (stillRunning) {
      synchronized (drawLock) {
        isActive = false;
        try {
          drawLock.wait();
        } catch (InterruptedException e) {
          return;
        }
        isActive = true;
      }
          
      if (!stillRunning)
        break;
          
      c = null;
        
      try {
        c = holder.lockCanvas();
        c.drawBitmap(canv.drawAndReturnSnapshot(), 0, 0, null);
      } finally {
        holder.unlockCanvasAndPost(c);
      }
    }
  }

  public boolean isActive() {
    // TODO Auto-generated method stub
    return isActive;
  }

  public void finish() {
    stillRunning = false;
    synchronized (drawLock) {
      if (!this.isActive)
        drawLock.notify();
    }
  }
}




Java Source Code List

gameaddict30.wallpaper.sertimus.DrawThread.java
gameaddict30.wallpaper.sertimus.LogicThread.java
gameaddict30.wallpaper.sertimus.MainCanvas.java
gameaddict30.wallpaper.sertimus.MainService.java
gameaddict30.wallpaper.sertimus.activities.MyPreferencesActivity.java
gameaddict30.wallpaper.sertimus.activities.SetWallpaperActivity.java
gameaddict30.wallpaper.sertimus.constants.CharacterAnimation.java
gameaddict30.wallpaper.sertimus.events.LiveObjectMotionEvent.java
gameaddict30.wallpaper.sertimus.interfaces.InteractiveLiveObject.java
gameaddict30.wallpaper.sertimus.interfaces.TalkableLiveObject.java
gameaddict30.wallpaper.sertimus.objects.BackgroundTile.java
gameaddict30.wallpaper.sertimus.objects.GrassStrands.java
gameaddict30.wallpaper.sertimus.objects.LiveObject.java
gameaddict30.wallpaper.sertimus.objects.Sertimus.java
gameaddict30.wallpaper.sertimus.objects.TalkBubble.java
gameaddict30.wallpaper.sertimus.utilities.Arithmetic.java
gameaddict30.wallpaper.sertimus.utilities.Strings.java