| 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 |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 53 | 53 |
| 54 void OnRowActivatedCallback(GtkTreeView* tree_view, GtkTreePath* path, | 54 void OnRowActivatedCallback(GtkTreeView* tree_view, GtkTreePath* path, |
| 55 GtkTreeViewColumn* column, gpointer data) { | 55 GtkTreeViewColumn* column, gpointer data) { |
| 56 reinterpret_cast<GtkMainWnd*>(data)->OnRowActivated(tree_view, path, column); | 56 reinterpret_cast<GtkMainWnd*>(data)->OnRowActivated(tree_view, path, column); |
| 57 } | 57 } |
| 58 | 58 |
| 59 gboolean SimulateLastRowActivated(gpointer data) { | 59 gboolean SimulateLastRowActivated(gpointer data) { |
| 60 GtkTreeView* tree_view = reinterpret_cast<GtkTreeView*>(data); | 60 GtkTreeView* tree_view = reinterpret_cast<GtkTreeView*>(data); |
| 61 GtkTreeModel* model = gtk_tree_view_get_model(tree_view); | 61 GtkTreeModel* model = gtk_tree_view_get_model(tree_view); |
| 62 | 62 |
| 63 // "if iter is NULL, then the number of toplevel nodes is returned." | 63 // "if iter is null, then the number of toplevel nodes is returned." |
| 64 int rows = gtk_tree_model_iter_n_children(model, NULL); | 64 int rows = gtk_tree_model_iter_n_children(model, nullptr); |
| 65 GtkTreePath* lastpath = gtk_tree_path_new_from_indices(rows - 1, -1); | 65 GtkTreePath* lastpath = gtk_tree_path_new_from_indices(rows - 1, -1); |
| 66 | 66 |
| 67 // Select the last item in the list | 67 // Select the last item in the list |
| 68 GtkTreeSelection* selection = gtk_tree_view_get_selection(tree_view); | 68 GtkTreeSelection* selection = gtk_tree_view_get_selection(tree_view); |
| 69 gtk_tree_selection_select_path(selection, lastpath); | 69 gtk_tree_selection_select_path(selection, lastpath); |
| 70 | 70 |
| 71 // Our TreeView only has one column, so it is column 0. | 71 // Our TreeView only has one column, so it is column 0. |
| 72 GtkTreeViewColumn* column = gtk_tree_view_get_column(tree_view, 0); | 72 GtkTreeViewColumn* column = gtk_tree_view_get_column(tree_view, 0); |
| 73 | 73 |
| 74 gtk_tree_view_row_activated(tree_view, lastpath, column); | 74 gtk_tree_view_row_activated(tree_view, lastpath, column); |
| 75 | 75 |
| 76 gtk_tree_path_free(lastpath); | 76 gtk_tree_path_free(lastpath); |
| 77 return false; | 77 return false; |
| 78 } | 78 } |
| 79 | 79 |
| 80 // Creates a tree view, that we use to display the list of peers. | 80 // Creates a tree view, that we use to display the list of peers. |
| 81 void InitializeList(GtkWidget* list) { | 81 void InitializeList(GtkWidget* list) { |
| 82 GtkCellRenderer* renderer = gtk_cell_renderer_text_new(); | 82 GtkCellRenderer* renderer = gtk_cell_renderer_text_new(); |
| 83 GtkTreeViewColumn* column = gtk_tree_view_column_new_with_attributes( | 83 GtkTreeViewColumn* column = gtk_tree_view_column_new_with_attributes( |
| 84 "List Items", renderer, "text", 0, NULL); | 84 "List Items", renderer, "text", 0, nullptr); |
| 85 gtk_tree_view_append_column(GTK_TREE_VIEW(list), column); | 85 gtk_tree_view_append_column(GTK_TREE_VIEW(list), column); |
| 86 GtkListStore* store = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_INT); | 86 GtkListStore* store = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_INT); |
| 87 gtk_tree_view_set_model(GTK_TREE_VIEW(list), GTK_TREE_MODEL(store)); | 87 gtk_tree_view_set_model(GTK_TREE_VIEW(list), GTK_TREE_MODEL(store)); |
| 88 g_object_unref(store); | 88 g_object_unref(store); |
| 89 } | 89 } |
| 90 | 90 |
| 91 // Adds an entry to a tree view. | 91 // Adds an entry to a tree view. |
| 92 void AddToList(GtkWidget* list, const gchar* str, int value) { | 92 void AddToList(GtkWidget* list, const gchar* str, int value) { |
| 93 GtkListStore* store = GTK_LIST_STORE( | 93 GtkListStore* store = GTK_LIST_STORE( |
| 94 gtk_tree_view_get_model(GTK_TREE_VIEW(list))); | 94 gtk_tree_view_get_model(GTK_TREE_VIEW(list))); |
| (...skipping 29 matching lines...) Expand all Loading... |
| 124 wnd->Draw(widget, cr); | 124 wnd->Draw(widget, cr); |
| 125 return false; | 125 return false; |
| 126 } | 126 } |
| 127 | 127 |
| 128 } // namespace | 128 } // namespace |
| 129 | 129 |
| 130 // | 130 // |
| 131 // GtkMainWnd implementation. | 131 // GtkMainWnd implementation. |
| 132 // | 132 // |
| 133 | 133 |
| 134 GtkMainWnd::GtkMainWnd(const char* server, int port, bool autoconnect, | 134 GtkMainWnd::GtkMainWnd(const char* server, |
| 135 int port, |
| 136 bool autoconnect, |
| 135 bool autocall) | 137 bool autocall) |
| 136 : window_(NULL), draw_area_(NULL), vbox_(NULL), server_edit_(NULL), | 138 : window_(nullptr), |
| 137 port_edit_(NULL), peer_list_(NULL), callback_(NULL), | 139 draw_area_(nullptr), |
| 138 server_(server), autoconnect_(autoconnect), autocall_(autocall) { | 140 vbox_(nullptr), |
| 141 server_edit_(nullptr), |
| 142 port_edit_(nullptr), |
| 143 peer_list_(nullptr), |
| 144 callback_(nullptr), |
| 145 server_(server), |
| 146 autoconnect_(autoconnect), |
| 147 autocall_(autocall) { |
| 139 char buffer[10]; | 148 char buffer[10]; |
| 140 sprintfn(buffer, sizeof(buffer), "%i", port); | 149 sprintfn(buffer, sizeof(buffer), "%i", port); |
| 141 port_ = buffer; | 150 port_ = buffer; |
| 142 } | 151 } |
| 143 | 152 |
| 144 GtkMainWnd::~GtkMainWnd() { | 153 GtkMainWnd::~GtkMainWnd() { |
| 145 RTC_DCHECK(!IsWindow()); | 154 RTC_DCHECK(!IsWindow()); |
| 146 } | 155 } |
| 147 | 156 |
| 148 void GtkMainWnd::RegisterObserver(MainWndCallback* callback) { | 157 void GtkMainWnd::RegisterObserver(MainWndCallback* callback) { |
| 149 callback_ = callback; | 158 callback_ = callback; |
| 150 } | 159 } |
| 151 | 160 |
| 152 bool GtkMainWnd::IsWindow() { | 161 bool GtkMainWnd::IsWindow() { |
| 153 return window_ != NULL && GTK_IS_WINDOW(window_); | 162 return window_ != nullptr && GTK_IS_WINDOW(window_); |
| 154 } | 163 } |
| 155 | 164 |
| 156 void GtkMainWnd::MessageBox(const char* caption, const char* text, | 165 void GtkMainWnd::MessageBox(const char* caption, const char* text, |
| 157 bool is_error) { | 166 bool is_error) { |
| 158 GtkWidget* dialog = gtk_message_dialog_new(GTK_WINDOW(window_), | 167 GtkWidget* dialog = gtk_message_dialog_new(GTK_WINDOW(window_), |
| 159 GTK_DIALOG_DESTROY_WITH_PARENT, | 168 GTK_DIALOG_DESTROY_WITH_PARENT, |
| 160 is_error ? GTK_MESSAGE_ERROR : GTK_MESSAGE_INFO, | 169 is_error ? GTK_MESSAGE_ERROR : GTK_MESSAGE_INFO, |
| 161 GTK_BUTTONS_CLOSE, "%s", text); | 170 GTK_BUTTONS_CLOSE, "%s", text); |
| 162 gtk_window_set_title(GTK_WINDOW(dialog), caption); | 171 gtk_window_set_title(GTK_WINDOW(dialog), caption); |
| 163 gtk_dialog_run(GTK_DIALOG(dialog)); | 172 gtk_dialog_run(GTK_DIALOG(dialog)); |
| (...skipping 27 matching lines...) Expand all Loading... |
| 191 void GtkMainWnd::StopRemoteRenderer() { | 200 void GtkMainWnd::StopRemoteRenderer() { |
| 192 remote_renderer_.reset(); | 201 remote_renderer_.reset(); |
| 193 } | 202 } |
| 194 | 203 |
| 195 void GtkMainWnd::QueueUIThreadCallback(int msg_id, void* data) { | 204 void GtkMainWnd::QueueUIThreadCallback(int msg_id, void* data) { |
| 196 g_idle_add(HandleUIThreadCallback, | 205 g_idle_add(HandleUIThreadCallback, |
| 197 new UIThreadCallbackData(callback_, msg_id, data)); | 206 new UIThreadCallbackData(callback_, msg_id, data)); |
| 198 } | 207 } |
| 199 | 208 |
| 200 bool GtkMainWnd::Create() { | 209 bool GtkMainWnd::Create() { |
| 201 RTC_DCHECK(window_ == NULL); | 210 RTC_DCHECK(window_ == nullptr); |
| 202 | 211 |
| 203 window_ = gtk_window_new(GTK_WINDOW_TOPLEVEL); | 212 window_ = gtk_window_new(GTK_WINDOW_TOPLEVEL); |
| 204 if (window_) { | 213 if (window_) { |
| 205 gtk_window_set_position(GTK_WINDOW(window_), GTK_WIN_POS_CENTER); | 214 gtk_window_set_position(GTK_WINDOW(window_), GTK_WIN_POS_CENTER); |
| 206 gtk_window_set_default_size(GTK_WINDOW(window_), 640, 480); | 215 gtk_window_set_default_size(GTK_WINDOW(window_), 640, 480); |
| 207 gtk_window_set_title(GTK_WINDOW(window_), "PeerConnection client"); | 216 gtk_window_set_title(GTK_WINDOW(window_), "PeerConnection client"); |
| 208 g_signal_connect(G_OBJECT(window_), "delete-event", | 217 g_signal_connect(G_OBJECT(window_), "delete-event", |
| 209 G_CALLBACK(&OnDestroyedCallback), this); | 218 G_CALLBACK(&OnDestroyedCallback), this); |
| 210 g_signal_connect(window_, "key-press-event", G_CALLBACK(OnKeyPressCallback), | 219 g_signal_connect(window_, "key-press-event", G_CALLBACK(OnKeyPressCallback), |
| 211 this); | 220 this); |
| 212 | 221 |
| 213 SwitchToConnectUI(); | 222 SwitchToConnectUI(); |
| 214 } | 223 } |
| 215 | 224 |
| 216 return window_ != NULL; | 225 return window_ != nullptr; |
| 217 } | 226 } |
| 218 | 227 |
| 219 bool GtkMainWnd::Destroy() { | 228 bool GtkMainWnd::Destroy() { |
| 220 if (!IsWindow()) | 229 if (!IsWindow()) |
| 221 return false; | 230 return false; |
| 222 | 231 |
| 223 gtk_widget_destroy(window_); | 232 gtk_widget_destroy(window_); |
| 224 window_ = NULL; | 233 window_ = nullptr; |
| 225 | 234 |
| 226 return true; | 235 return true; |
| 227 } | 236 } |
| 228 | 237 |
| 229 void GtkMainWnd::SwitchToConnectUI() { | 238 void GtkMainWnd::SwitchToConnectUI() { |
| 230 LOG(INFO) << __FUNCTION__; | 239 LOG(INFO) << __FUNCTION__; |
| 231 | 240 |
| 232 RTC_DCHECK(IsWindow()); | 241 RTC_DCHECK(IsWindow()); |
| 233 RTC_DCHECK(vbox_ == NULL); | 242 RTC_DCHECK(vbox_ == nullptr); |
| 234 | 243 |
| 235 gtk_container_set_border_width(GTK_CONTAINER(window_), 10); | 244 gtk_container_set_border_width(GTK_CONTAINER(window_), 10); |
| 236 | 245 |
| 237 if (peer_list_) { | 246 if (peer_list_) { |
| 238 gtk_widget_destroy(peer_list_); | 247 gtk_widget_destroy(peer_list_); |
| 239 peer_list_ = NULL; | 248 peer_list_ = nullptr; |
| 240 } | 249 } |
| 241 | 250 |
| 242 #if GTK_MAJOR_VERSION == 2 | 251 #if GTK_MAJOR_VERSION == 2 |
| 243 vbox_ = gtk_vbox_new(FALSE, 5); | 252 vbox_ = gtk_vbox_new(FALSE, 5); |
| 244 #else | 253 #else |
| 245 vbox_ = gtk_box_new(GTK_ORIENTATION_VERTICAL, 5); | 254 vbox_ = gtk_box_new(GTK_ORIENTATION_VERTICAL, 5); |
| 246 #endif | 255 #endif |
| 247 GtkWidget* valign = gtk_alignment_new(0, 1, 0, 0); | 256 GtkWidget* valign = gtk_alignment_new(0, 1, 0, 0); |
| 248 gtk_container_add(GTK_CONTAINER(vbox_), valign); | 257 gtk_container_add(GTK_CONTAINER(vbox_), valign); |
| 249 gtk_container_add(GTK_CONTAINER(window_), vbox_); | 258 gtk_container_add(GTK_CONTAINER(window_), vbox_); |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 282 g_idle_add(SimulateButtonClick, button); | 291 g_idle_add(SimulateButtonClick, button); |
| 283 } | 292 } |
| 284 | 293 |
| 285 void GtkMainWnd::SwitchToPeerList(const Peers& peers) { | 294 void GtkMainWnd::SwitchToPeerList(const Peers& peers) { |
| 286 LOG(INFO) << __FUNCTION__; | 295 LOG(INFO) << __FUNCTION__; |
| 287 | 296 |
| 288 if (!peer_list_) { | 297 if (!peer_list_) { |
| 289 gtk_container_set_border_width(GTK_CONTAINER(window_), 0); | 298 gtk_container_set_border_width(GTK_CONTAINER(window_), 0); |
| 290 if (vbox_) { | 299 if (vbox_) { |
| 291 gtk_widget_destroy(vbox_); | 300 gtk_widget_destroy(vbox_); |
| 292 vbox_ = NULL; | 301 vbox_ = nullptr; |
| 293 server_edit_ = NULL; | 302 server_edit_ = nullptr; |
| 294 port_edit_ = NULL; | 303 port_edit_ = nullptr; |
| 295 } else if (draw_area_) { | 304 } else if (draw_area_) { |
| 296 gtk_widget_destroy(draw_area_); | 305 gtk_widget_destroy(draw_area_); |
| 297 draw_area_ = NULL; | 306 draw_area_ = nullptr; |
| 298 draw_buffer_.reset(); | 307 draw_buffer_.reset(); |
| 299 } | 308 } |
| 300 | 309 |
| 301 peer_list_ = gtk_tree_view_new(); | 310 peer_list_ = gtk_tree_view_new(); |
| 302 g_signal_connect(peer_list_, "row-activated", | 311 g_signal_connect(peer_list_, "row-activated", |
| 303 G_CALLBACK(OnRowActivatedCallback), this); | 312 G_CALLBACK(OnRowActivatedCallback), this); |
| 304 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(peer_list_), FALSE); | 313 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(peer_list_), FALSE); |
| 305 InitializeList(peer_list_); | 314 InitializeList(peer_list_); |
| 306 gtk_container_add(GTK_CONTAINER(window_), peer_list_); | 315 gtk_container_add(GTK_CONTAINER(window_), peer_list_); |
| 307 gtk_widget_show_all(window_); | 316 gtk_widget_show_all(window_); |
| 308 } else { | 317 } else { |
| 309 GtkListStore* store = | 318 GtkListStore* store = |
| 310 GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(peer_list_))); | 319 GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(peer_list_))); |
| 311 gtk_list_store_clear(store); | 320 gtk_list_store_clear(store); |
| 312 } | 321 } |
| 313 | 322 |
| 314 AddToList(peer_list_, "List of currently connected peers:", -1); | 323 AddToList(peer_list_, "List of currently connected peers:", -1); |
| 315 for (Peers::const_iterator i = peers.begin(); i != peers.end(); ++i) | 324 for (Peers::const_iterator i = peers.begin(); i != peers.end(); ++i) |
| 316 AddToList(peer_list_, i->second.c_str(), i->first); | 325 AddToList(peer_list_, i->second.c_str(), i->first); |
| 317 | 326 |
| 318 if (autocall_ && peers.begin() != peers.end()) | 327 if (autocall_ && peers.begin() != peers.end()) |
| 319 g_idle_add(SimulateLastRowActivated, peer_list_); | 328 g_idle_add(SimulateLastRowActivated, peer_list_); |
| 320 } | 329 } |
| 321 | 330 |
| 322 void GtkMainWnd::SwitchToStreamingUI() { | 331 void GtkMainWnd::SwitchToStreamingUI() { |
| 323 LOG(INFO) << __FUNCTION__; | 332 LOG(INFO) << __FUNCTION__; |
| 324 | 333 |
| 325 RTC_DCHECK(draw_area_ == NULL); | 334 RTC_DCHECK(draw_area_ == nullptr); |
| 326 | 335 |
| 327 gtk_container_set_border_width(GTK_CONTAINER(window_), 0); | 336 gtk_container_set_border_width(GTK_CONTAINER(window_), 0); |
| 328 if (peer_list_) { | 337 if (peer_list_) { |
| 329 gtk_widget_destroy(peer_list_); | 338 gtk_widget_destroy(peer_list_); |
| 330 peer_list_ = NULL; | 339 peer_list_ = nullptr; |
| 331 } | 340 } |
| 332 | 341 |
| 333 draw_area_ = gtk_drawing_area_new(); | 342 draw_area_ = gtk_drawing_area_new(); |
| 334 gtk_container_add(GTK_CONTAINER(window_), draw_area_); | 343 gtk_container_add(GTK_CONTAINER(window_), draw_area_); |
| 335 g_signal_connect(G_OBJECT(draw_area_), "draw", G_CALLBACK(&::Draw), this); | 344 g_signal_connect(G_OBJECT(draw_area_), "draw", G_CALLBACK(&::Draw), this); |
| 336 | 345 |
| 337 gtk_widget_show_all(window_); | 346 gtk_widget_show_all(window_); |
| 338 } | 347 } |
| 339 | 348 |
| 340 void GtkMainWnd::OnDestroyed(GtkWidget* widget, GdkEvent* event) { | 349 void GtkMainWnd::OnDestroyed(GtkWidget* widget, GdkEvent* event) { |
| 341 callback_->Close(); | 350 callback_->Close(); |
| 342 window_ = NULL; | 351 window_ = nullptr; |
| 343 draw_area_ = NULL; | 352 draw_area_ = nullptr; |
| 344 vbox_ = NULL; | 353 vbox_ = nullptr; |
| 345 server_edit_ = NULL; | 354 server_edit_ = nullptr; |
| 346 port_edit_ = NULL; | 355 port_edit_ = nullptr; |
| 347 peer_list_ = NULL; | 356 peer_list_ = nullptr; |
| 348 } | 357 } |
| 349 | 358 |
| 350 void GtkMainWnd::OnClicked(GtkWidget* widget) { | 359 void GtkMainWnd::OnClicked(GtkWidget* widget) { |
| 351 // Make the connect button insensitive, so that it cannot be clicked more than | 360 // Make the connect button insensitive, so that it cannot be clicked more than |
| 352 // once. Now that the connection includes auto-retry, it should not be | 361 // once. Now that the connection includes auto-retry, it should not be |
| 353 // necessary to click it more than once. | 362 // necessary to click it more than once. |
| 354 gtk_widget_set_sensitive(widget, false); | 363 gtk_widget_set_sensitive(widget, false); |
| 355 server_ = gtk_entry_get_text(GTK_ENTRY(server_edit_)); | 364 server_ = gtk_entry_get_text(GTK_ENTRY(server_edit_)); |
| 356 port_ = gtk_entry_get_text(GTK_ENTRY(port_edit_)); | 365 port_ = gtk_entry_get_text(GTK_ENTRY(port_edit_)); |
| 357 int port = port_.length() ? atoi(port_.c_str()) : 0; | 366 int port = port_.length() ? atoi(port_.c_str()) : 0; |
| (...skipping 16 matching lines...) Expand all Loading... |
| 374 break; | 383 break; |
| 375 | 384 |
| 376 #if GTK_MAJOR_VERSION == 2 | 385 #if GTK_MAJOR_VERSION == 2 |
| 377 case GDK_KP_Enter: | 386 case GDK_KP_Enter: |
| 378 case GDK_Return: | 387 case GDK_Return: |
| 379 #else | 388 #else |
| 380 case GDK_KEY_KP_Enter: | 389 case GDK_KEY_KP_Enter: |
| 381 case GDK_KEY_Return: | 390 case GDK_KEY_Return: |
| 382 #endif | 391 #endif |
| 383 if (vbox_) { | 392 if (vbox_) { |
| 384 OnClicked(NULL); | 393 OnClicked(nullptr); |
| 385 } else if (peer_list_) { | 394 } else if (peer_list_) { |
| 386 // OnRowActivated will be called automatically when the user | 395 // OnRowActivated will be called automatically when the user |
| 387 // presses enter. | 396 // presses enter. |
| 388 } | 397 } |
| 389 break; | 398 break; |
| 390 | 399 |
| 391 default: | 400 default: |
| 392 break; | 401 break; |
| 393 } | 402 } |
| 394 } | 403 } |
| 395 } | 404 } |
| 396 | 405 |
| 397 void GtkMainWnd::OnRowActivated(GtkTreeView* tree_view, GtkTreePath* path, | 406 void GtkMainWnd::OnRowActivated(GtkTreeView* tree_view, GtkTreePath* path, |
| 398 GtkTreeViewColumn* column) { | 407 GtkTreeViewColumn* column) { |
| 399 RTC_DCHECK(peer_list_ != NULL); | 408 RTC_DCHECK(peer_list_ != nullptr); |
| 400 GtkTreeIter iter; | 409 GtkTreeIter iter; |
| 401 GtkTreeModel* model; | 410 GtkTreeModel* model; |
| 402 GtkTreeSelection* selection = | 411 GtkTreeSelection* selection = |
| 403 gtk_tree_view_get_selection(GTK_TREE_VIEW(tree_view)); | 412 gtk_tree_view_get_selection(GTK_TREE_VIEW(tree_view)); |
| 404 if (gtk_tree_selection_get_selected(selection, &model, &iter)) { | 413 if (gtk_tree_selection_get_selected(selection, &model, &iter)) { |
| 405 char* text; | 414 char* text; |
| 406 int id = -1; | 415 int id = -1; |
| 407 gtk_tree_model_get(model, &iter, 0, &text, 1, &id, -1); | 416 gtk_tree_model_get(model, &iter, 0, &text, 1, &id, -1); |
| 408 if (id != -1) | 417 if (id != -1) |
| 409 callback_->ConnectToPeer(id); | 418 callback_->ConnectToPeer(id); |
| 410 g_free(text); | 419 g_free(text); |
| 411 } | 420 } |
| 412 } | 421 } |
| 413 | 422 |
| 414 void GtkMainWnd::OnRedraw() { | 423 void GtkMainWnd::OnRedraw() { |
| 415 gdk_threads_enter(); | 424 gdk_threads_enter(); |
| 416 | 425 |
| 417 VideoRenderer* remote_renderer = remote_renderer_.get(); | 426 VideoRenderer* remote_renderer = remote_renderer_.get(); |
| 418 if (remote_renderer && remote_renderer->image() != NULL && | 427 if (remote_renderer && remote_renderer->image() != nullptr && |
| 419 draw_area_ != NULL) { | 428 draw_area_ != nullptr) { |
| 420 width_ = remote_renderer->width(); | 429 width_ = remote_renderer->width(); |
| 421 height_ = remote_renderer->height(); | 430 height_ = remote_renderer->height(); |
| 422 | 431 |
| 423 if (!draw_buffer_.get()) { | 432 if (!draw_buffer_.get()) { |
| 424 draw_buffer_size_ = (width_ * height_ * 4) * 4; | 433 draw_buffer_size_ = (width_ * height_ * 4) * 4; |
| 425 draw_buffer_.reset(new uint8_t[draw_buffer_size_]); | 434 draw_buffer_.reset(new uint8_t[draw_buffer_size_]); |
| 426 gtk_widget_set_size_request(draw_area_, width_ * 2, height_ * 2); | 435 gtk_widget_set_size_request(draw_area_, width_ * 2, height_ * 2); |
| 427 } | 436 } |
| 428 | 437 |
| 429 const uint32_t* image = | 438 const uint32_t* image = |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 539 libyuv::I420ToABGR(buffer->DataY(), buffer->StrideY(), | 548 libyuv::I420ToABGR(buffer->DataY(), buffer->StrideY(), |
| 540 buffer->DataU(), buffer->StrideU(), | 549 buffer->DataU(), buffer->StrideU(), |
| 541 buffer->DataV(), buffer->StrideV(), | 550 buffer->DataV(), buffer->StrideV(), |
| 542 image_.get(), width_ * 4, | 551 image_.get(), width_ * 4, |
| 543 buffer->width(), buffer->height()); | 552 buffer->width(), buffer->height()); |
| 544 | 553 |
| 545 gdk_threads_leave(); | 554 gdk_threads_leave(); |
| 546 | 555 |
| 547 g_idle_add(Redraw, main_wnd_); | 556 g_idle_add(Redraw, main_wnd_); |
| 548 } | 557 } |
| OLD | NEW |