Loading include/media/stagefright/foundation/AHandler.h +2 −0 Original line number Diff line number Diff line Loading @@ -34,6 +34,8 @@ struct AHandler : public RefBase { return mID; } sp<ALooper> looper(); protected: virtual void onMessageReceived(const sp<AMessage> &msg) = 0; Loading include/media/stagefright/foundation/ALooperRoster.h +2 −0 Original line number Diff line number Diff line Loading @@ -34,6 +34,8 @@ struct ALooperRoster { void postMessage(const sp<AMessage> &msg, int64_t delayUs = 0); void deliverMessage(const sp<AMessage> &msg); sp<ALooper> findLooper(ALooper::handler_id handlerID); private: struct HandlerInfo { sp<ALooper> mLooper; Loading media/libstagefright/foundation/AHandler.cpp 0 → 100644 +33 −0 Original line number Diff line number Diff line /* * 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 media/libstagefright/foundation/ALooperRoster.cpp +12 −0 Original line number Diff line number Diff line Loading @@ -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 media/libstagefright/foundation/Android.mk +1 −0 Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ LOCAL_SRC_FILES:= \ AAtomizer.cpp \ ABuffer.cpp \ ADebug.cpp \ AHandler.cpp \ ALooper.cpp \ ALooperRoster.cpp \ AMessage.cpp \ Loading Loading
include/media/stagefright/foundation/AHandler.h +2 −0 Original line number Diff line number Diff line Loading @@ -34,6 +34,8 @@ struct AHandler : public RefBase { return mID; } sp<ALooper> looper(); protected: virtual void onMessageReceived(const sp<AMessage> &msg) = 0; Loading
include/media/stagefright/foundation/ALooperRoster.h +2 −0 Original line number Diff line number Diff line Loading @@ -34,6 +34,8 @@ struct ALooperRoster { void postMessage(const sp<AMessage> &msg, int64_t delayUs = 0); void deliverMessage(const sp<AMessage> &msg); sp<ALooper> findLooper(ALooper::handler_id handlerID); private: struct HandlerInfo { sp<ALooper> mLooper; Loading
media/libstagefright/foundation/AHandler.cpp 0 → 100644 +33 −0 Original line number Diff line number Diff line /* * 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
media/libstagefright/foundation/ALooperRoster.cpp +12 −0 Original line number Diff line number Diff line Loading @@ -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
media/libstagefright/foundation/Android.mk +1 −0 Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ LOCAL_SRC_FILES:= \ AAtomizer.cpp \ ABuffer.cpp \ ADebug.cpp \ AHandler.cpp \ ALooper.cpp \ ALooperRoster.cpp \ AMessage.cpp \ Loading