| OLD | NEW |
| 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 CustomSocketServer(rtc::Thread* thread, GtkMainWnd* wnd) |
| 24 : thread_(thread), wnd_(wnd), conductor_(NULL), client_(NULL) {} | 24 : thread_(thread), wnd_(wnd), conductor_(nullptr), client_(nullptr) {} |
| 25 virtual ~CustomSocketServer() {} | 25 virtual ~CustomSocketServer() {} |
| 26 | 26 |
| 27 void set_client(PeerConnectionClient* client) { client_ = client; } | 27 void set_client(PeerConnectionClient* client) { client_ = client; } |
| 28 void set_conductor(Conductor* conductor) { conductor_ = conductor; } | 28 void set_conductor(Conductor* conductor) { conductor_ = conductor; } |
| 29 | 29 |
| 30 // Override so that we can also pump the GTK message loop. | 30 // Override so that we can also pump the GTK message loop. |
| 31 virtual bool Wait(int cms, bool process_io) { | 31 virtual bool Wait(int cms, bool process_io) { |
| 32 // Pump GTK events. | 32 // Pump GTK events. |
| 33 // TODO(henrike): We really should move either the socket server or UI to a | 33 // 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 | 34 // different thread. Alternatively we could look at merging the two loops |
| 35 // by implementing a dispatcher for the socket server and/or use | 35 // by implementing a dispatcher for the socket server and/or use |
| 36 // g_main_context_set_poll_func. | 36 // g_main_context_set_poll_func. |
| 37 while (gtk_events_pending()) | 37 while (gtk_events_pending()) |
| 38 gtk_main_iteration(); | 38 gtk_main_iteration(); |
| 39 | 39 |
| 40 if (!wnd_->IsWindow() && !conductor_->connection_active() && | 40 if (!wnd_->IsWindow() && !conductor_->connection_active() && |
| 41 client_ != NULL && !client_->is_connected()) { | 41 client_ != nullptr && !client_->is_connected()) { |
| 42 thread_->Quit(); | 42 thread_->Quit(); |
| 43 } | 43 } |
| 44 return rtc::PhysicalSocketServer::Wait(0/*cms == -1 ? 1 : cms*/, | 44 return rtc::PhysicalSocketServer::Wait(0/*cms == -1 ? 1 : cms*/, |
| 45 process_io); | 45 process_io); |
| 46 } | 46 } |
| 47 | 47 |
| 48 protected: | 48 protected: |
| 49 rtc::Thread* thread_; | 49 rtc::Thread* thread_; |
| 50 GtkMainWnd* wnd_; | 50 GtkMainWnd* wnd_; |
| 51 Conductor* conductor_; | 51 Conductor* conductor_; |
| 52 PeerConnectionClient* client_; | 52 PeerConnectionClient* client_; |
| 53 }; | 53 }; |
| 54 | 54 |
| 55 int main(int argc, char* argv[]) { | 55 int main(int argc, char* argv[]) { |
| 56 gtk_init(&argc, &argv); | 56 gtk_init(&argc, &argv); |
| 57 // g_type_init API is deprecated (and does nothing) since glib 2.35.0, see: | 57 // 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 | 58 // https://mail.gnome.org/archives/commits-list/2012-November/msg07809.html |
| 59 #if !GLIB_CHECK_VERSION(2, 35, 0) | 59 #if !GLIB_CHECK_VERSION(2, 35, 0) |
| 60 g_type_init(); | 60 g_type_init(); |
| 61 #endif | 61 #endif |
| 62 // g_thread_init API is deprecated since glib 2.31.0, see release note: | 62 // g_thread_init API is deprecated since glib 2.31.0, see release note: |
| 63 // http://mail.gnome.org/archives/gnome-announce-list/2011-October/msg00041.ht
ml | 63 // http://mail.gnome.org/archives/gnome-announce-list/2011-October/msg00041.ht
ml |
| 64 #if !GLIB_CHECK_VERSION(2, 31, 0) | 64 #if !GLIB_CHECK_VERSION(2, 31, 0) |
| 65 g_thread_init(NULL); | 65 g_thread_init(nullptr); |
| 66 #endif | 66 #endif |
| 67 | 67 |
| 68 rtc::FlagList::SetFlagsFromCommandLine(&argc, argv, true); | 68 rtc::FlagList::SetFlagsFromCommandLine(&argc, argv, true); |
| 69 if (FLAG_help) { | 69 if (FLAG_help) { |
| 70 rtc::FlagList::Print(NULL, false); | 70 rtc::FlagList::Print(nullptr, false); |
| 71 return 0; | 71 return 0; |
| 72 } | 72 } |
| 73 | 73 |
| 74 // Abort if the user specifies a port that is outside the allowed | 74 // Abort if the user specifies a port that is outside the allowed |
| 75 // range [1, 65535]. | 75 // range [1, 65535]. |
| 76 if ((FLAG_port < 1) || (FLAG_port > 65535)) { | 76 if ((FLAG_port < 1) || (FLAG_port > 65535)) { |
| 77 printf("Error: %i is not a valid port.\n", FLAG_port); | 77 printf("Error: %i is not a valid port.\n", FLAG_port); |
| 78 return -1; | 78 return -1; |
| 79 } | 79 } |
| 80 | 80 |
| (...skipping 11 matching lines...) Expand all Loading... |
| 92 rtc::scoped_refptr<Conductor> conductor( | 92 rtc::scoped_refptr<Conductor> conductor( |
| 93 new rtc::RefCountedObject<Conductor>(&client, &wnd)); | 93 new rtc::RefCountedObject<Conductor>(&client, &wnd)); |
| 94 socket_server.set_client(&client); | 94 socket_server.set_client(&client); |
| 95 socket_server.set_conductor(conductor); | 95 socket_server.set_conductor(conductor); |
| 96 | 96 |
| 97 thread->Run(); | 97 thread->Run(); |
| 98 | 98 |
| 99 // gtk_main(); | 99 // gtk_main(); |
| 100 wnd.Destroy(); | 100 wnd.Destroy(); |
| 101 | 101 |
| 102 thread->set_socketserver(NULL); | 102 thread->set_socketserver(nullptr); |
| 103 // TODO(henrike): Run the Gtk main loop to tear down the connection. | 103 // TODO(henrike): Run the Gtk main loop to tear down the connection. |
| 104 /* | 104 /* |
| 105 while (gtk_events_pending()) { | 105 while (gtk_events_pending()) { |
| 106 gtk_main_iteration(); | 106 gtk_main_iteration(); |
| 107 } | 107 } |
| 108 */ | 108 */ |
| 109 rtc::CleanupSSL(); | 109 rtc::CleanupSSL(); |
| 110 return 0; | 110 return 0; |
| 111 } | 111 } |
| OLD | NEW |