Moved AsyncInvoker to be destructed first in WebRtcVideoSendStream.

Bug: none
Change-Id: Ie90c9d6fd415678affcc4acefdd045334d83d8b2
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/140864
Reviewed-by: Niels Moller <nisse@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28283}
diff --git a/media/engine/webrtc_video_engine.h b/media/engine/webrtc_video_engine.h
index 971cab5..da07835 100644
--- a/media/engine/webrtc_video_engine.h
+++ b/media/engine/webrtc_video_engine.h
@@ -349,7 +349,6 @@
         RTC_EXCLUSIVE_LOCKS_REQUIRED(&thread_checker_);
 
     rtc::ThreadChecker thread_checker_;
-    rtc::AsyncInvoker invoker_;
     rtc::Thread* worker_thread_;
     const std::vector<uint32_t> ssrcs_ RTC_GUARDED_BY(&thread_checker_);
     const std::vector<SsrcGroup> ssrc_groups_ RTC_GUARDED_BY(&thread_checker_);
@@ -373,6 +372,11 @@
     webrtc::RtpParameters rtp_parameters_ RTC_GUARDED_BY(&thread_checker_);
 
     bool sending_ RTC_GUARDED_BY(&thread_checker_);
+
+    // In order for the |invoker_| to protect other members from being
+    // destructed as they are used in asynchronous tasks it has to be destructed
+    // first.
+    rtc::AsyncInvoker invoker_;
   };
 
   // Wrapper for the receiver part, contains configs etc. that are needed to