Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(21)

Side by Side Diff: webrtc/examples/peerconnection/client/linux/main.cc

Issue 2828223002: Delete method MessageQueue::set_socketserver (Closed)
Patch Set: Fix memory leak in SSLAdapterTestBase. Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright 2012 The WebRTC Project Authors. All rights reserved. 2 * Copyright 2012 The WebRTC Project Authors. All rights reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
11 #include <gtk/gtk.h> 11 #include <gtk/gtk.h>
12 12
13 #include "webrtc/examples/peerconnection/client/conductor.h" 13 #include "webrtc/examples/peerconnection/client/conductor.h"
14 #include "webrtc/examples/peerconnection/client/flagdefs.h" 14 #include "webrtc/examples/peerconnection/client/flagdefs.h"
15 #include "webrtc/examples/peerconnection/client/linux/main_wnd.h" 15 #include "webrtc/examples/peerconnection/client/linux/main_wnd.h"
16 #include "webrtc/examples/peerconnection/client/peer_connection_client.h" 16 #include "webrtc/examples/peerconnection/client/peer_connection_client.h"
17 17
18 #include "webrtc/base/ssladapter.h" 18 #include "webrtc/base/ssladapter.h"
19 #include "webrtc/base/thread.h" 19 #include "webrtc/base/thread.h"
20 20
21 class CustomSocketServer : public rtc::PhysicalSocketServer { 21 class CustomSocketServer : public rtc::PhysicalSocketServer {
22 public: 22 public:
23 CustomSocketServer(rtc::Thread* thread, GtkMainWnd* wnd) 23 explicit CustomSocketServer(GtkMainWnd* wnd)
24 : thread_(thread), wnd_(wnd), conductor_(NULL), client_(NULL) {} 24 : wnd_(wnd), conductor_(NULL), client_(NULL) {}
25 virtual ~CustomSocketServer() {} 25 virtual ~CustomSocketServer() {}
26 26
27 void SetMessageQueue(rtc::MessageQueue* queue) override {
28 message_queue_ = queue;
29 }
30
27 void set_client(PeerConnectionClient* client) { client_ = client; } 31 void set_client(PeerConnectionClient* client) { client_ = client; }
28 void set_conductor(Conductor* conductor) { conductor_ = conductor; } 32 void set_conductor(Conductor* conductor) { conductor_ = conductor; }
29 33
30 // Override so that we can also pump the GTK message loop. 34 // Override so that we can also pump the GTK message loop.
31 virtual bool Wait(int cms, bool process_io) { 35 virtual bool Wait(int cms, bool process_io) {
32 // Pump GTK events. 36 // Pump GTK events.
33 // TODO(henrike): We really should move either the socket server or UI to a 37 // TODO(henrike): We really should move either the socket server or UI to a
34 // different thread. Alternatively we could look at merging the two loops 38 // different thread. Alternatively we could look at merging the two loops
35 // by implementing a dispatcher for the socket server and/or use 39 // by implementing a dispatcher for the socket server and/or use
36 // g_main_context_set_poll_func. 40 // g_main_context_set_poll_func.
37 while (gtk_events_pending()) 41 while (gtk_events_pending())
38 gtk_main_iteration(); 42 gtk_main_iteration();
39 43
40 if (!wnd_->IsWindow() && !conductor_->connection_active() && 44 if (!wnd_->IsWindow() && !conductor_->connection_active() &&
41 client_ != NULL && !client_->is_connected()) { 45 client_ != NULL && !client_->is_connected()) {
42 thread_->Quit(); 46 message_queue_->Quit();
43 } 47 }
44 return rtc::PhysicalSocketServer::Wait(0/*cms == -1 ? 1 : cms*/, 48 return rtc::PhysicalSocketServer::Wait(0/*cms == -1 ? 1 : cms*/,
45 process_io); 49 process_io);
46 } 50 }
47 51
48 protected: 52 protected:
49 rtc::Thread* thread_; 53 rtc::MessageQueue* message_queue_;
50 GtkMainWnd* wnd_; 54 GtkMainWnd* wnd_;
51 Conductor* conductor_; 55 Conductor* conductor_;
52 PeerConnectionClient* client_; 56 PeerConnectionClient* client_;
53 }; 57 };
54 58
55 int main(int argc, char* argv[]) { 59 int main(int argc, char* argv[]) {
56 gtk_init(&argc, &argv); 60 gtk_init(&argc, &argv);
57 // g_type_init API is deprecated (and does nothing) since glib 2.35.0, see: 61 // g_type_init API is deprecated (and does nothing) since glib 2.35.0, see:
58 // https://mail.gnome.org/archives/commits-list/2012-November/msg07809.html 62 // https://mail.gnome.org/archives/commits-list/2012-November/msg07809.html
59 #if !GLIB_CHECK_VERSION(2, 35, 0) 63 #if !GLIB_CHECK_VERSION(2, 35, 0)
(...skipping 14 matching lines...) Expand all
74 // Abort if the user specifies a port that is outside the allowed 78 // Abort if the user specifies a port that is outside the allowed
75 // range [1, 65535]. 79 // range [1, 65535].
76 if ((FLAG_port < 1) || (FLAG_port > 65535)) { 80 if ((FLAG_port < 1) || (FLAG_port > 65535)) {
77 printf("Error: %i is not a valid port.\n", FLAG_port); 81 printf("Error: %i is not a valid port.\n", FLAG_port);
78 return -1; 82 return -1;
79 } 83 }
80 84
81 GtkMainWnd wnd(FLAG_server, FLAG_port, FLAG_autoconnect, FLAG_autocall); 85 GtkMainWnd wnd(FLAG_server, FLAG_port, FLAG_autoconnect, FLAG_autocall);
82 wnd.Create(); 86 wnd.Create();
83 87
84 rtc::AutoThread auto_thread; 88 CustomSocketServer socket_server(&wnd);
85 rtc::Thread* thread = rtc::Thread::Current(); 89 rtc::AutoSocketServerThread thread(&socket_server);
86 CustomSocketServer socket_server(thread, &wnd);
87 thread->set_socketserver(&socket_server);
88 90
89 rtc::InitializeSSL(); 91 rtc::InitializeSSL();
90 // Must be constructed after we set the socketserver. 92 // Must be constructed after we set the socketserver.
91 PeerConnectionClient client; 93 PeerConnectionClient client;
92 rtc::scoped_refptr<Conductor> conductor( 94 rtc::scoped_refptr<Conductor> conductor(
93 new rtc::RefCountedObject<Conductor>(&client, &wnd)); 95 new rtc::RefCountedObject<Conductor>(&client, &wnd));
94 socket_server.set_client(&client); 96 socket_server.set_client(&client);
95 socket_server.set_conductor(conductor); 97 socket_server.set_conductor(conductor);
96 98
97 thread->Run(); 99 thread.Run();
98 100
99 // gtk_main(); 101 // gtk_main();
100 wnd.Destroy(); 102 wnd.Destroy();
101 103
102 thread->set_socketserver(NULL);
103 // TODO(henrike): Run the Gtk main loop to tear down the connection. 104 // TODO(henrike): Run the Gtk main loop to tear down the connection.
104 /* 105 /*
105 while (gtk_events_pending()) { 106 while (gtk_events_pending()) {
106 gtk_main_iteration(); 107 gtk_main_iteration();
107 } 108 }
108 */ 109 */
109 rtc::CleanupSSL(); 110 rtc::CleanupSSL();
110 return 0; 111 return 0;
111 } 112 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698