Replace MapWrapper with std::map<>.

MapWrapper was needed on some platforms where STL wasn't supported, we
now use std::map<> directly.

BUG=2164
TEST=trybots
R=henrike@webrtc.org, phoglund@webrtc.org, stefan@webrtc.org, wu@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/2001004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4530 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
pbos@webrtc.org
2013-08-12 19:51:57 +00:00
parent dd14b2add1
commit 4ca7d3f9fe
34 changed files with 342 additions and 1295 deletions

View File

@ -46,7 +46,6 @@ VideoRenderAndroid::VideoRenderAndroid(
_critSect(*CriticalSectionWrapper::CreateCriticalSection()),
_renderType(videoRenderType),
_ptrWindow((jobject)(window)),
_streamsMap(),
_javaShutDownFlag(false),
_javaShutdownEvent(*EventWrapper::Create()),
_javaRenderEvent(*EventWrapper::Create()),
@ -62,9 +61,10 @@ VideoRenderAndroid::~VideoRenderAndroid() {
if (_javaRenderThread)
StopRender();
for (MapItem* item = _streamsMap.First(); item != NULL; item
= _streamsMap.Next(item)) { // Delete streams
delete static_cast<AndroidStream*> (item->GetItem());
for (AndroidStreamMap::iterator it = _streamsMap.begin();
it != _streamsMap.end();
++it) {
delete it->second;
}
delete &_javaShutdownEvent;
delete &_javaRenderEvent;
@ -91,20 +91,20 @@ VideoRenderAndroid::AddIncomingRenderStream(const uint32_t streamId,
CriticalSectionScoped cs(&_critSect);
AndroidStream* renderStream = NULL;
MapItem* item = _streamsMap.Find(streamId);
if (item) {
renderStream = (AndroidStream*) (item->GetItem());
if (NULL != renderStream) {
WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer, -1,
"%s: Render stream already exists", __FUNCTION__);
return renderStream;
}
AndroidStreamMap::iterator item = _streamsMap.find(streamId);
if (item != _streamsMap.end() && item->second != NULL) {
WEBRTC_TRACE(kTraceInfo,
kTraceVideoRenderer,
-1,
"%s: Render stream already exists",
__FUNCTION__);
return renderStream;
}
renderStream = CreateAndroidRenderChannel(streamId, zOrder, left, top,
right, bottom, *this);
if (renderStream) {
_streamsMap.Insert(streamId, renderStream);
_streamsMap[streamId] = renderStream;
}
else {
WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
@ -118,16 +118,14 @@ int32_t VideoRenderAndroid::DeleteIncomingRenderStream(
const uint32_t streamId) {
CriticalSectionScoped cs(&_critSect);
MapItem* item = _streamsMap.Find(streamId);
if (item) {
delete (AndroidStream*) item->GetItem();
_streamsMap.Erase(streamId);
}
else {
AndroidStreamMap::iterator item = _streamsMap.find(streamId);
if (item == _streamsMap.end()) {
WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
"(%s:%d): renderStream is NULL", __FUNCTION__, __LINE__);
return -1;
}
delete item->second;
_streamsMap.erase(item);
return 0;
}
@ -234,10 +232,10 @@ bool VideoRenderAndroid::JavaRenderThreadProcess()
}
}
for (MapItem* item = _streamsMap.First(); item != NULL;
item = _streamsMap.Next(item)) {
static_cast<AndroidStream*> (item->GetItem())->DeliverFrame(
_javaRenderJniEnv);
for (AndroidStreamMap::iterator it = _streamsMap.begin();
it != _streamsMap.end();
++it) {
it->second->DeliverFrame(_javaRenderJniEnv);
}
if (_javaShutDownFlag) {

View File

@ -12,8 +12,10 @@
#define WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_ANDROID_VIDEO_RENDER_ANDROID_IMPL_H_
#include <jni.h>
#include <map>
#include "webrtc/modules/video_render/i_video_render.h"
#include "webrtc/system_wrappers/interface/map_wrapper.h"
namespace webrtc {
@ -136,7 +138,8 @@ class VideoRenderAndroid: IVideoRender {
bool JavaRenderThreadProcess();
// Map with streams to render.
MapWrapper _streamsMap;
typedef std::map<int32_t, AndroidStream*> AndroidStreamMap;
AndroidStreamMap _streamsMap;
// True if the _javaRenderThread thread shall be detached from the JVM.
bool _javaShutDownFlag;
EventWrapper& _javaShutdownEvent;