summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/foundation
diff options
context:
space:
mode:
authorAndreas Huber <andih@google.com>2010-07-02 15:15:44 -0700
committerAndreas Huber <andih@google.com>2010-07-02 15:16:13 -0700
commite2b20987c2652a984d10520ef3542d50d91119c5 (patch)
treebb37d8c872710f99d2e358bf4a683f81fb6a2e0e /media/libstagefright/foundation
parentcbb56d14dad2785baf7a723b43aa6f1da32dc51f (diff)
downloadframeworks_av-e2b20987c2652a984d10520ef3542d50d91119c5.zip
frameworks_av-e2b20987c2652a984d10520ef3542d50d91119c5.tar.gz
frameworks_av-e2b20987c2652a984d10520ef3542d50d91119c5.tar.bz2
An AHandler can now find its associated ALooper.
Change-Id: Ic7087b8dcbc0d9abda272df0cb01b04b006f82ad
Diffstat (limited to 'media/libstagefright/foundation')
-rw-r--r--media/libstagefright/foundation/AHandler.cpp33
-rw-r--r--media/libstagefright/foundation/ALooperRoster.cpp12
-rw-r--r--media/libstagefright/foundation/Android.mk1
3 files changed, 46 insertions, 0 deletions
diff --git a/media/libstagefright/foundation/AHandler.cpp b/media/libstagefright/foundation/AHandler.cpp
new file mode 100644
index 0000000..bd5f7e9
--- /dev/null
+++ b/media/libstagefright/foundation/AHandler.cpp
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+//#define LOG_NDEBUG 0
+#define LOG_TAG "AHandler"
+#include <utils/Log.h>
+
+#include <media/stagefright/foundation/AHandler.h>
+
+#include <media/stagefright/foundation/ALooperRoster.h>
+
+namespace android {
+
+sp<ALooper> AHandler::looper() {
+ extern ALooperRoster gLooperRoster;
+
+ return gLooperRoster.findLooper(id());
+}
+
+} // namespace android
diff --git a/media/libstagefright/foundation/ALooperRoster.cpp b/media/libstagefright/foundation/ALooperRoster.cpp
index 5bb1cf9..bb9bc14 100644
--- a/media/libstagefright/foundation/ALooperRoster.cpp
+++ b/media/libstagefright/foundation/ALooperRoster.cpp
@@ -97,4 +97,16 @@ void ALooperRoster::deliverMessage(const sp<AMessage> &msg) {
handler->onMessageReceived(msg);
}
+sp<ALooper> ALooperRoster::findLooper(ALooper::handler_id handlerID) {
+ Mutex::Autolock autoLock(mLock);
+
+ ssize_t index = mHandlers.indexOfKey(handlerID);
+
+ if (index < 0) {
+ return NULL;
+ }
+
+ return mHandlers.valueAt(index).mLooper;
+}
+
} // namespace android
diff --git a/media/libstagefright/foundation/Android.mk b/media/libstagefright/foundation/Android.mk
index 73047e7..35eea7e 100644
--- a/media/libstagefright/foundation/Android.mk
+++ b/media/libstagefright/foundation/Android.mk
@@ -5,6 +5,7 @@ LOCAL_SRC_FILES:= \
AAtomizer.cpp \
ABuffer.cpp \
ADebug.cpp \
+ AHandler.cpp \
ALooper.cpp \
ALooperRoster.cpp \
AMessage.cpp \