bug 761503 - return a bool from PumpMessageLoop to indicate if work was performed r=snorp

This commit is contained in:
Brad Lassey 2012-06-05 01:14:12 -04:00
Родитель 11e82908b9
Коммит c6affc91f4
4 изменённых файлов: 11 добавлений и 10 удалений

Просмотреть файл

@ -91,7 +91,7 @@ MessagePump::Run(MessagePump::Delegate* aDelegate)
// This processes messages in the Android Looper. Note that we only
// get here if the normal Gecko event loop has been awoken above.
// Bug 750713
AndroidBridge::Bridge()->PumpMessageLoop();
did_work |= AndroidBridge::Bridge()->PumpMessageLoop();
#endif
did_work |= aDelegate->DoDelayedWork(&delayed_work_time_);

Просмотреть файл

@ -2105,16 +2105,17 @@ public class GeckoAppShell
GeckoScreenOrientationListener.getInstance().unlockScreenOrientation();
}
public static void pumpMessageLoop() {
public static boolean pumpMessageLoop() {
MessageQueue mq = Looper.myQueue();
Message msg = getNextMessageFromQueue(mq);
if (msg == null)
return;
if (msg.getTarget() == null)
return false;
if (msg.getTarget() == null)
Looper.myLooper().quit();
else
msg.getTarget().dispatchMessage(msg);
msg.recycle();
return true;
}
static class AsyncResultHandler extends GeckoApp.FilePickerResultHandler {

Просмотреть файл

@ -184,7 +184,7 @@ AndroidBridge::Init(JNIEnv *jEnv,
jSurfacePointerField = jEnv->GetFieldID(jSurfaceClass, "mNativeSurface", "I");
#ifdef MOZ_JAVA_COMPOSITOR
jPumpMessageLoop = (jmethodID) jEnv->GetStaticMethodID(jGeckoAppShellClass, "pumpMessageLoop", "()V");
jPumpMessageLoop = (jmethodID) jEnv->GetStaticMethodID(jGeckoAppShellClass, "pumpMessageLoop", "()Z");
jAddPluginView = jEnv->GetStaticMethodID(jGeckoAppShellClass, "addPluginView", "(Landroid/view/View;IIIIZI)V");
jRemovePluginView = jEnv->GetStaticMethodID(jGeckoAppShellClass, "removePluginView", "(Landroid/view/View;Z)V");
@ -2281,20 +2281,20 @@ AndroidBridge::UnlockScreenOrientation()
env->CallStaticVoidMethod(mGeckoAppShellClass, jUnlockScreenOrientation);
}
void
bool
AndroidBridge::PumpMessageLoop()
{
#if MOZ_JAVA_COMPOSITOR
JNIEnv* env = GetJNIEnv();
if (!env)
return;
return false;
AutoLocalJNIFrame jniFrame(env, 0);
if ((void*)pthread_self() != mThread)
return;
return false;
env->CallStaticVoidMethod(mGeckoAppShellClass, jPumpMessageLoop);
return env->CallStaticBooleanMethod(mGeckoAppShellClass, jPumpMessageLoop);
#endif
}

Просмотреть файл

@ -353,7 +353,7 @@ public:
void LockScreenOrientation(uint32_t aOrientation);
void UnlockScreenOrientation();
void PumpMessageLoop();
bool PumpMessageLoop();
protected:
static AndroidBridge *sBridge;