blob: 361190b7805e7fb948f28d465e70d4a85631c4c6 [file] [log] [blame]
nicolasroard0d7cdf82012-09-25 14:27:56 -07001
2package com.android.gallery3d.filtershow.cache;
3
4import android.os.Handler;
5import android.os.Handler.Callback;
6import android.os.HandlerThread;
7import android.os.Message;
8import android.os.Process;
9
10public class DelayedPresetCache extends DirectPresetCache implements Callback {
11 private HandlerThread mHandlerThread = null;
12
13 private final static int NEW_PRESET = 0;
14 private final static int COMPUTE_PRESET = 1;
15
16 private Handler mProcessingHandler = null;
nicolasroard81eb9972012-10-05 15:55:56 -070017 private final Handler mUIHandler = new Handler() {
nicolasroard0d7cdf82012-09-25 14:27:56 -070018 @Override
19 public void handleMessage(Message msg) {
20 switch (msg.what) {
21 case NEW_PRESET: {
22 CachedPreset cache = (CachedPreset) msg.obj;
23 didCompute(cache);
24 break;
25 }
26 }
27 }
28 };
29
30 @Override
31 public boolean handleMessage(Message msg) {
32 switch (msg.what) {
33 case COMPUTE_PRESET: {
34 CachedPreset cache = (CachedPreset) msg.obj;
35 compute(cache);
36 Message uimsg = mUIHandler.obtainMessage(NEW_PRESET, cache);
37 mUIHandler.sendMessage(uimsg);
38 break;
39 }
40 }
41 return false;
42 }
43
nicolasroard81eb9972012-10-05 15:55:56 -070044 public DelayedPresetCache(ImageLoader loader, int size) {
45 super(loader, size);
nicolasroard0d7cdf82012-09-25 14:27:56 -070046 mHandlerThread = new HandlerThread("ImageProcessing", Process.THREAD_PRIORITY_BACKGROUND);
47 mHandlerThread.start();
48 mProcessingHandler = new Handler(mHandlerThread.getLooper(), this);
49 }
50
nicolasroard81eb9972012-10-05 15:55:56 -070051 @Override
nicolasroard0d7cdf82012-09-25 14:27:56 -070052 protected void willCompute(CachedPreset cache) {
53 if (cache == null) {
54 return;
55 }
56 cache.setBusy(true);
57 Message msg = mProcessingHandler.obtainMessage(COMPUTE_PRESET, cache);
58 mProcessingHandler.sendMessage(msg);
59 }
60}