Always initialize Trace in Call TraceDispatcher.

Prevents violation of lock order occuring previously when
RegisterCallback called SetTraceCallback while holding its lock, which
called Print back (which acquires the lock).

BUG=
R=andrew@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5433 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/webrtc/video/call.cc b/webrtc/video/call.cc
index baa2d40..ff7a05f 100644
--- a/webrtc/video/call.cc
+++ b/webrtc/video/call.cc
@@ -91,21 +91,22 @@
 class TraceDispatcher : public TraceCallback {
  public:
   TraceDispatcher()
-      : crit_(CriticalSectionWrapper::CreateCriticalSection()),
-        initialized_(false),
-        filter_(kTraceNone) {}
+      : lock_(CriticalSectionWrapper::CreateCriticalSection()),
+        filter_(kTraceNone) {
+    Trace::CreateTrace();
+    VideoEngine::SetTraceCallback(this);
+    VideoEngine::SetTraceFilter(kTraceNone);
+  }
 
   ~TraceDispatcher() {
-    if (initialized_) {
-      Trace::ReturnTrace();
-      VideoEngine::SetTraceCallback(NULL);
-    }
+    Trace::ReturnTrace();
+    VideoEngine::SetTraceCallback(NULL);
   }
 
   virtual void Print(TraceLevel level,
                      const char* message,
                      int length) OVERRIDE {
-    CriticalSectionScoped lock(crit_.get());
+    CriticalSectionScoped crit(lock_.get());
     for (std::map<Call*, Call::Config*>::iterator it = callbacks_.begin();
          it != callbacks_.end();
          ++it) {
@@ -118,20 +119,15 @@
     if (config->trace_callback == NULL)
       return;
 
-    CriticalSectionScoped lock(crit_.get());
+    CriticalSectionScoped crit(lock_.get());
     callbacks_[call] = config;
 
     filter_ |= config->trace_filter;
-    if (filter_ != kTraceNone && !initialized_) {
-      initialized_ = true;
-      Trace::CreateTrace();
-      VideoEngine::SetTraceCallback(this);
-    }
     VideoEngine::SetTraceFilter(filter_);
   }
 
   void DeregisterCallback(Call* call) {
-    CriticalSectionScoped lock(crit_.get());
+    CriticalSectionScoped crit(lock_.get());
     callbacks_.erase(call);
 
     filter_ = kTraceNone;
@@ -145,8 +141,7 @@
   }
 
  private:
-  scoped_ptr<CriticalSectionWrapper> crit_;
-  bool initialized_;
+  scoped_ptr<CriticalSectionWrapper> lock_;
   unsigned int filter_;
   std::map<Call*, Call::Config*> callbacks_;
 };