smooth navscreen animation

Change-Id: I87bfba8a18a1aaeffa95d15e4ddb4313dd2752d9
diff --git a/src/com/android/browser/NavScreen.java b/src/com/android/browser/NavScreen.java
index a1fa639..8cc2271 100644
--- a/src/com/android/browser/NavScreen.java
+++ b/src/com/android/browser/NavScreen.java
@@ -34,13 +34,13 @@
 import android.widget.Gallery;
 import android.widget.ImageButton;
 import android.widget.ImageView;
-import android.widget.ImageView.ScaleType;
 import android.widget.LinearLayout;
 import android.widget.ListPopupWindow;
 import android.widget.TextView;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.concurrent.Semaphore;
 
 public class NavScreen extends LinearLayout implements OnClickListener {
 
@@ -65,8 +65,7 @@
     int mTabHeight;
     TabAdapter mAdapter;
     ListPopupWindow mPopup;
-
-    boolean mReady;
+    Semaphore mLock;
 
     public NavScreen(Activity activity, UiController ctl, PhoneUi ui) {
         super(activity);
@@ -86,6 +85,30 @@
         requestLayout();
     }
 
+    protected synchronized void startTask(Runnable r) {
+        Thread task = new Thread(r);
+        mLock = new Semaphore(1);
+        try {
+            mLock.acquire();
+        } catch (InterruptedException e) {
+        }
+        task.start();
+    }
+
+    protected synchronized void finishTask() {
+        mLock.release();
+    }
+
+    protected synchronized void waitForTask() {
+        if (mLock != null) {
+            try {
+                mLock.acquire();
+            } catch (InterruptedException e) {
+            }
+        }
+        mLock = null;
+    }
+
     protected void showMenu() {
         Menu menu = mUi.getMenu();
         menu.setGroupVisible(R.id.NAV_MENU, false);