Changeset 213:3ef58e537359 in mediastreamer2
- Timestamp:
- Jan 3, 2009 4:34:55 PM (4 years ago)
- Branch:
- default
- Location:
- linphone
- Files:
-
- 8 edited
-
coreapi/linphonecore.c (modified) (1 diff)
-
coreapi/linphonecore.h (modified) (1 diff)
-
gtk-glade/main.c (modified) (4 diffs)
-
gtk-glade/main.glade (modified) (9 diffs)
-
mediastreamer2/include/mediastreamer2/mediastream.h (modified) (1 diff)
-
mediastreamer2/include/mediastreamer2/msvideoout.h (modified) (2 diffs)
-
mediastreamer2/src/videoout.c (modified) (10 diffs)
-
mediastreamer2/src/videostream.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
linphone/coreapi/linphonecore.c
r199 r213 2035 2035 } 2036 2036 2037 unsigned long linphone_core_get_native_video_window_id(const LinphoneCore *lc){ 2038 if (lc->videostream) 2039 return video_stream_get_native_window_id(lc->videostream); 2040 if (lc->previewstream) 2041 return video_stream_get_native_window_id(lc->previewstream); 2042 return 0; 2043 } 2044 2037 2045 static MSVideoSizeDef supported_resolutions[]={ 2038 2046 { MS_VIDEO_SIZE_SVGA , "svga" }, -
linphone/coreapi/linphonecore.h
r190 r213 703 703 const char *linphone_core_get_video_device(const LinphoneCore *lc); 704 704 705 705 /*function to be used for eventually setting window decorations (icons, title...)*/ 706 unsigned long linphone_core_get_native_video_window_id(const LinphoneCore *lc); 706 707 707 708 -
linphone/gtk-glade/main.c
r211 r213 247 247 } 248 248 249 static void set_video_window_decorations(GdkWindow *w){ 250 const char *title=linphone_gtk_get_ui_config("title","Linphone"); 251 const char *icon_path=linphone_gtk_get_ui_config("icon","linphone2.png"); 252 char video_title[256]; 253 GdkPixbuf *pbuf=create_pixbuf(icon_path); 254 snprintf(video_title,sizeof(video_title),"%s video",title); 255 gdk_window_set_title(w,video_title); 256 if (pbuf){ 257 GList *l=NULL; 258 l=g_list_append(l,pbuf); 259 gdk_window_set_icon_list(w,l); 260 g_list_free(l); 261 g_object_unref(G_OBJECT(pbuf)); 262 } 263 } 264 249 265 static gboolean linphone_gtk_iterate(LinphoneCore *lc){ 266 unsigned long id; 267 static unsigned long previd=0; 250 268 linphone_core_iterate(lc); 269 id=linphone_core_get_native_video_window_id(lc); 270 if (id!=previd){ 271 GdkWindow *w; 272 previd=id; 273 if (id!=0){ 274 w=gdk_window_foreign_new(id); 275 if (w) { 276 set_video_window_decorations(w); 277 g_object_unref(G_OBJECT(w)); 278 } 279 else ms_error("gdk_window_foreign_new() failed"); 280 } 281 } 251 282 return TRUE; 252 283 } … … 694 725 static gboolean config_loaded=FALSE; 695 726 static gboolean show_digits=1; 727 static gboolean show_identities=1; 696 728 static const char *title; 697 729 static const char *home; … … 700 732 if (!config_loaded){ 701 733 show_digits=linphone_gtk_get_ui_config_int("show_digits",1); 734 show_identities=linphone_gtk_get_ui_config_int("identity_frame",1); 702 735 title=linphone_gtk_get_ui_config("title",NULL); 703 736 home=linphone_gtk_get_ui_config("home","http://www.linphone.org"); … … 705 738 config_loaded=TRUE; 706 739 } 707 if (show_digits==0) gtk_widget_hide(linphone_gtk_get_widget(w,"dialpad")); 740 if (show_digits==FALSE) gtk_widget_hide(linphone_gtk_get_widget(w,"dialpad")); 741 if (show_identities==FALSE) gtk_widget_hide(linphone_gtk_get_widget(w,"identity_frame")); 708 742 if (title) gtk_window_set_title(GTK_WINDOW(w),title); 709 743 if (icon_path) { -
linphone/gtk-glade/main.glade
r210 r213 1 1 <?xml version="1.0" encoding="UTF-8" standalone="no"?> 2 2 <!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd"> 3 <!--Generated with glade3 3.4.5 on Sun Dec 28 23:41:16 2008 -->3 <!--Generated with glade3 3.4.5 on Tue Dec 30 16:01:16 2008 --> 4 4 <glade-interface> 5 5 <widget class="GtkWindow" id="main"> … … 427 427 <property name="homogeneous">True</property> 428 428 <child> 429 <widget class="GtkButton" id="dtmf_1"> 430 <property name="visible">True</property> 431 <property name="can_focus">True</property> 432 <property name="receives_default">True</property> 433 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> 434 <property name="label" translatable="yes">1</property> 435 <property name="response_id">0</property> 436 </widget> 437 <packing> 438 <property name="x_options"></property> 439 <property name="y_options"></property> 440 </packing> 441 </child> 442 <child> 443 <widget class="GtkButton" id="dtmf_2"> 444 <property name="visible">True</property> 445 <property name="can_focus">True</property> 446 <property name="receives_default">True</property> 447 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> 448 <property name="label" translatable="yes">2</property> 429 <widget class="GtkButton" id="dtmf_D"> 430 <property name="visible">True</property> 431 <property name="can_focus">True</property> 432 <property name="receives_default">True</property> 433 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> 434 <property name="label" translatable="yes">D</property> 435 <property name="response_id">0</property> 436 </widget> 437 <packing> 438 <property name="left_attach">3</property> 439 <property name="right_attach">4</property> 440 <property name="top_attach">3</property> 441 <property name="bottom_attach">4</property> 442 <property name="x_options"></property> 443 <property name="y_options"></property> 444 </packing> 445 </child> 446 <child> 447 <widget class="GtkButton" id="dtmf_hash"> 448 <property name="visible">True</property> 449 <property name="can_focus">True</property> 450 <property name="receives_default">True</property> 451 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> 452 <property name="label" translatable="yes">#</property> 453 <property name="response_id">0</property> 454 </widget> 455 <packing> 456 <property name="left_attach">2</property> 457 <property name="right_attach">3</property> 458 <property name="top_attach">3</property> 459 <property name="bottom_attach">4</property> 460 <property name="x_options"></property> 461 <property name="y_options"></property> 462 </packing> 463 </child> 464 <child> 465 <widget class="GtkButton" id="dtmf_0"> 466 <property name="visible">True</property> 467 <property name="can_focus">True</property> 468 <property name="receives_default">True</property> 469 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> 470 <property name="label" translatable="yes">0</property> 449 471 <property name="response_id">0</property> 450 472 </widget> … … 452 474 <property name="left_attach">1</property> 453 475 <property name="right_attach">2</property> 454 <property name="x_options"></property> 455 <property name="y_options"></property> 456 </packing> 457 </child> 458 <child> 459 <widget class="GtkButton" id="dtmf_3"> 460 <property name="visible">True</property> 461 <property name="can_focus">True</property> 462 <property name="receives_default">True</property> 463 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> 464 <property name="label" translatable="yes">3</property> 476 <property name="top_attach">3</property> 477 <property name="bottom_attach">4</property> 478 <property name="x_options"></property> 479 <property name="y_options"></property> 480 </packing> 481 </child> 482 <child> 483 <widget class="GtkButton" id="dtmf_star"> 484 <property name="visible">True</property> 485 <property name="can_focus">True</property> 486 <property name="receives_default">True</property> 487 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> 488 <property name="label" translatable="yes">*</property> 489 <property name="response_id">0</property> 490 </widget> 491 <packing> 492 <property name="top_attach">3</property> 493 <property name="bottom_attach">4</property> 494 <property name="x_options"></property> 495 <property name="y_options"></property> 496 </packing> 497 </child> 498 <child> 499 <widget class="GtkButton" id="dtmf_C"> 500 <property name="visible">True</property> 501 <property name="can_focus">True</property> 502 <property name="receives_default">True</property> 503 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> 504 <property name="label" translatable="yes">C</property> 505 <property name="response_id">0</property> 506 </widget> 507 <packing> 508 <property name="left_attach">3</property> 509 <property name="right_attach">4</property> 510 <property name="top_attach">2</property> 511 <property name="bottom_attach">3</property> 512 <property name="x_options"></property> 513 <property name="y_options"></property> 514 </packing> 515 </child> 516 <child> 517 <widget class="GtkButton" id="dtmf_9"> 518 <property name="visible">True</property> 519 <property name="can_focus">True</property> 520 <property name="receives_default">True</property> 521 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> 522 <property name="label" translatable="yes">9</property> 465 523 <property name="response_id">0</property> 466 524 </widget> … … 468 526 <property name="left_attach">2</property> 469 527 <property name="right_attach">3</property> 470 <property name="x_options"></property> 471 <property name="y_options"></property> 472 </packing> 473 </child> 474 <child> 475 <widget class="GtkButton" id="dtmf_A"> 476 <property name="visible">True</property> 477 <property name="can_focus">True</property> 478 <property name="receives_default">True</property> 479 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> 480 <property name="label" translatable="yes">A</property> 528 <property name="top_attach">2</property> 529 <property name="bottom_attach">3</property> 530 <property name="x_options"></property> 531 <property name="y_options"></property> 532 </packing> 533 </child> 534 <child> 535 <widget class="GtkButton" id="dtmf_8"> 536 <property name="visible">True</property> 537 <property name="can_focus">True</property> 538 <property name="receives_default">True</property> 539 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> 540 <property name="label" translatable="yes">8</property> 541 <property name="response_id">0</property> 542 </widget> 543 <packing> 544 <property name="left_attach">1</property> 545 <property name="right_attach">2</property> 546 <property name="top_attach">2</property> 547 <property name="bottom_attach">3</property> 548 <property name="x_options"></property> 549 <property name="y_options"></property> 550 </packing> 551 </child> 552 <child> 553 <widget class="GtkButton" id="dtmf_7"> 554 <property name="visible">True</property> 555 <property name="can_focus">True</property> 556 <property name="receives_default">True</property> 557 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> 558 <property name="label" translatable="yes">7</property> 559 <property name="response_id">0</property> 560 </widget> 561 <packing> 562 <property name="top_attach">2</property> 563 <property name="bottom_attach">3</property> 564 <property name="x_options"></property> 565 <property name="y_options"></property> 566 </packing> 567 </child> 568 <child> 569 <widget class="GtkButton" id="dtmf_B"> 570 <property name="visible">True</property> 571 <property name="can_focus">True</property> 572 <property name="receives_default">True</property> 573 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> 574 <property name="label" translatable="yes">B</property> 481 575 <property name="response_id">0</property> 482 576 </widget> … … 484 578 <property name="left_attach">3</property> 485 579 <property name="right_attach">4</property> 486 <property name="x_options"></property> 487 <property name="y_options"></property> 488 </packing> 489 </child> 490 <child> 491 <widget class="GtkButton" id="dtmf_4"> 492 <property name="visible">True</property> 493 <property name="can_focus">True</property> 494 <property name="receives_default">True</property> 495 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> 496 <property name="label" translatable="yes">4</property> 497 <property name="response_id">0</property> 498 </widget> 499 <packing> 580 <property name="top_attach">1</property> 581 <property name="bottom_attach">2</property> 582 <property name="x_options"></property> 583 <property name="y_options"></property> 584 </packing> 585 </child> 586 <child> 587 <widget class="GtkButton" id="dtmf_6"> 588 <property name="visible">True</property> 589 <property name="can_focus">True</property> 590 <property name="receives_default">True</property> 591 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> 592 <property name="label" translatable="yes">6</property> 593 <property name="response_id">0</property> 594 </widget> 595 <packing> 596 <property name="left_attach">2</property> 597 <property name="right_attach">3</property> 500 598 <property name="top_attach">1</property> 501 599 <property name="bottom_attach">2</property> … … 523 621 </child> 524 622 <child> 525 <widget class="GtkButton" id="dtmf_6"> 526 <property name="visible">True</property> 527 <property name="can_focus">True</property> 528 <property name="receives_default">True</property> 529 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> 530 <property name="label" translatable="yes">6</property> 623 <widget class="GtkButton" id="dtmf_4"> 624 <property name="visible">True</property> 625 <property name="can_focus">True</property> 626 <property name="receives_default">True</property> 627 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> 628 <property name="label" translatable="yes">4</property> 629 <property name="response_id">0</property> 630 </widget> 631 <packing> 632 <property name="top_attach">1</property> 633 <property name="bottom_attach">2</property> 634 <property name="x_options"></property> 635 <property name="y_options"></property> 636 </packing> 637 </child> 638 <child> 639 <widget class="GtkButton" id="dtmf_A"> 640 <property name="visible">True</property> 641 <property name="can_focus">True</property> 642 <property name="receives_default">True</property> 643 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> 644 <property name="label" translatable="yes">A</property> 645 <property name="response_id">0</property> 646 </widget> 647 <packing> 648 <property name="left_attach">3</property> 649 <property name="right_attach">4</property> 650 <property name="x_options"></property> 651 <property name="y_options"></property> 652 </packing> 653 </child> 654 <child> 655 <widget class="GtkButton" id="dtmf_3"> 656 <property name="visible">True</property> 657 <property name="can_focus">True</property> 658 <property name="receives_default">True</property> 659 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> 660 <property name="label" translatable="yes">3</property> 531 661 <property name="response_id">0</property> 532 662 </widget> … … 534 664 <property name="left_attach">2</property> 535 665 <property name="right_attach">3</property> 536 <property name="top_attach">1</property> 537 <property name="bottom_attach">2</property> 538 <property name="x_options"></property> 539 <property name="y_options"></property> 540 </packing> 541 </child> 542 <child> 543 <widget class="GtkButton" id="dtmf_B"> 544 <property name="visible">True</property> 545 <property name="can_focus">True</property> 546 <property name="receives_default">True</property> 547 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> 548 <property name="label" translatable="yes">B</property> 549 <property name="response_id">0</property> 550 </widget> 551 <packing> 552 <property name="left_attach">3</property> 553 <property name="right_attach">4</property> 554 <property name="top_attach">1</property> 555 <property name="bottom_attach">2</property> 556 <property name="x_options"></property> 557 <property name="y_options"></property> 558 </packing> 559 </child> 560 <child> 561 <widget class="GtkButton" id="dtmf_7"> 562 <property name="visible">True</property> 563 <property name="can_focus">True</property> 564 <property name="receives_default">True</property> 565 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> 566 <property name="label" translatable="yes">7</property> 567 <property name="response_id">0</property> 568 </widget> 569 <packing> 570 <property name="top_attach">2</property> 571 <property name="bottom_attach">3</property> 572 <property name="x_options"></property> 573 <property name="y_options"></property> 574 </packing> 575 </child> 576 <child> 577 <widget class="GtkButton" id="dtmf_8"> 578 <property name="visible">True</property> 579 <property name="can_focus">True</property> 580 <property name="receives_default">True</property> 581 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> 582 <property name="label" translatable="yes">8</property> 666 <property name="x_options"></property> 667 <property name="y_options"></property> 668 </packing> 669 </child> 670 <child> 671 <widget class="GtkButton" id="dtmf_2"> 672 <property name="visible">True</property> 673 <property name="can_focus">True</property> 674 <property name="receives_default">True</property> 675 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> 676 <property name="label" translatable="yes">2</property> 583 677 <property name="response_id">0</property> 584 678 </widget> … … 586 680 <property name="left_attach">1</property> 587 681 <property name="right_attach">2</property> 588 <property name="top_attach">2</property> 589 <property name="bottom_attach">3</property> 590 <property name="x_options"></property> 591 <property name="y_options"></property> 592 </packing> 593 </child> 594 <child> 595 <widget class="GtkButton" id="dtmf_9"> 596 <property name="visible">True</property> 597 <property name="can_focus">True</property> 598 <property name="receives_default">True</property> 599 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> 600 <property name="label" translatable="yes">9</property> 601 <property name="response_id">0</property> 602 </widget> 603 <packing> 604 <property name="left_attach">2</property> 605 <property name="right_attach">3</property> 606 <property name="top_attach">2</property> 607 <property name="bottom_attach">3</property> 608 <property name="x_options"></property> 609 <property name="y_options"></property> 610 </packing> 611 </child> 612 <child> 613 <widget class="GtkButton" id="dtmf_C"> 614 <property name="visible">True</property> 615 <property name="can_focus">True</property> 616 <property name="receives_default">True</property> 617 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> 618 <property name="label" translatable="yes">C</property> 619 <property name="response_id">0</property> 620 </widget> 621 <packing> 622 <property name="left_attach">3</property> 623 <property name="right_attach">4</property> 624 <property name="top_attach">2</property> 625 <property name="bottom_attach">3</property> 626 <property name="x_options"></property> 627 <property name="y_options"></property> 628 </packing> 629 </child> 630 <child> 631 <widget class="GtkButton" id="dtmf_star"> 632 <property name="visible">True</property> 633 <property name="can_focus">True</property> 634 <property name="receives_default">True</property> 635 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> 636 <property name="label" translatable="yes">*</property> 637 <property name="response_id">0</property> 638 </widget> 639 <packing> 640 <property name="top_attach">3</property> 641 <property name="bottom_attach">4</property> 642 <property name="x_options"></property> 643 <property name="y_options"></property> 644 </packing> 645 </child> 646 <child> 647 <widget class="GtkButton" id="dtmf_0"> 648 <property name="visible">True</property> 649 <property name="can_focus">True</property> 650 <property name="receives_default">True</property> 651 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> 652 <property name="label" translatable="yes">0</property> 653 <property name="response_id">0</property> 654 </widget> 655 <packing> 656 <property name="left_attach">1</property> 657 <property name="right_attach">2</property> 658 <property name="top_attach">3</property> 659 <property name="bottom_attach">4</property> 660 <property name="x_options"></property> 661 <property name="y_options"></property> 662 </packing> 663 </child> 664 <child> 665 <widget class="GtkButton" id="dtmf_hash"> 666 <property name="visible">True</property> 667 <property name="can_focus">True</property> 668 <property name="receives_default">True</property> 669 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> 670 <property name="label" translatable="yes">#</property> 671 <property name="response_id">0</property> 672 </widget> 673 <packing> 674 <property name="left_attach">2</property> 675 <property name="right_attach">3</property> 676 <property name="top_attach">3</property> 677 <property name="bottom_attach">4</property> 678 <property name="x_options"></property> 679 <property name="y_options"></property> 680 </packing> 681 </child> 682 <child> 683 <widget class="GtkButton" id="dtmf_D"> 684 <property name="visible">True</property> 685 <property name="can_focus">True</property> 686 <property name="receives_default">True</property> 687 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> 688 <property name="label" translatable="yes">D</property> 689 <property name="response_id">0</property> 690 </widget> 691 <packing> 692 <property name="left_attach">3</property> 693 <property name="right_attach">4</property> 694 <property name="top_attach">3</property> 695 <property name="bottom_attach">4</property> 682 <property name="x_options"></property> 683 <property name="y_options"></property> 684 </packing> 685 </child> 686 <child> 687 <widget class="GtkButton" id="dtmf_1"> 688 <property name="visible">True</property> 689 <property name="can_focus">True</property> 690 <property name="receives_default">True</property> 691 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> 692 <property name="label" translatable="yes">1</property> 693 <property name="response_id">0</property> 694 </widget> 695 <packing> 696 696 <property name="x_options"></property> 697 697 <property name="y_options"></property> … … 730 730 </child> 731 731 <child> 732 <widget class="GtkFrame" id=" frame8">732 <widget class="GtkFrame" id="identity_frame"> 733 733 <property name="visible">True</property> 734 734 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> -
linphone/mediastreamer2/include/mediastreamer2/mediastream.h
r190 r213 143 143 void video_stream_set_sent_video_size(VideoStream *stream, MSVideoSize vsize); 144 144 void video_stream_enable_self_view(VideoStream *stream, bool_t val); 145 unsigned long video_stream_get_native_window_id(VideoStream *stream); 146 145 147 146 148 VideoStream * video_preview_start(MSWebCam *device, MSVideoSize vsize); -
linphone/mediastreamer2/include/mediastreamer2/msvideoout.h
r162 r213 53 53 long window_id; /*window id if the display should use an existing window*/ 54 54 void *data; 55 bool_t use_external_window; 55 56 } MSDisplay; 56 57 … … 95 96 #define MS_VIDEO_OUT_AUTO_FIT MS_FILTER_METHOD(MS_VIDEO_OUT_ID,3,int) 96 97 #define MS_VIDEO_OUT_ENABLE_MIRRORING MS_FILTER_METHOD(MS_VIDEO_OUT_ID,4,int) 98 #define MS_VIDEO_OUT_GET_NATIVE_WINDOW_ID MS_FILTER_METHOD(MS_VIDEO_OUT_ID,5,unsigned long) 97 99 98 100 #ifdef __cplusplus -
linphone/mediastreamer2/src/videoout.c
r209 r213 53 53 54 54 #include <SDL/SDL_syswm.h> 55 56 static long sdl_get_native_window_id(){ 57 SDL_SysWMinfo info; 58 SDL_VERSION(&info.version); 59 if ( SDL_GetWMInfo(&info) ) { 60 if ( info.subsystem == SDL_SYSWM_X11 ) { 61 return (long) info.info.x11.wmwindow; 62 } 63 } 64 return 0; 65 } 55 66 56 67 static void sdl_show_window(bool_t show){ … … 80 91 } 81 92 93 static long sdl_get_native_window_id(){ 94 ms_warning("sdl_get_native_window_id not implemented"); 95 return 0; 96 } 97 82 98 #endif 83 99 … … 93 109 } 94 110 if (sdl_screen->flags & SDL_HWSURFACE) ms_message("SDL surface created in hardware"); 95 SDL_WM_SetCaption(" Linphone Video", NULL);111 SDL_WM_SetCaption("Video window", NULL); 96 112 ms_message("Using yuv overlay."); 97 113 lay=SDL_CreateYUVOverlay(w , h ,SDL_YV12_OVERLAY,sdl_screen); … … 138 154 obj->data=lay; 139 155 sdl_show_window(TRUE); 156 obj->window_id=sdl_get_native_window_id(); 140 157 return TRUE; 141 158 } … … 208 225 .update=sdl_display_update, 209 226 .uninit=sdl_display_uninit, 210 .pollevent=sdl_poll_event 227 .pollevent=sdl_poll_event, 211 228 }; 212 229 … … 326 343 327 344 if (wd->window==NULL){ 328 if (obj-> window_id!=0){345 if (obj->use_external_window && obj->window_id!=0){ 329 346 void *p; 330 347 wd->window=(HWND)obj->window_id; … … 336 353 }else{ 337 354 wd->window=create_window(wd->fb.w,wd->fb.h); 355 obj->window_id=wd->window; 338 356 if (wd->window!=NULL) SetWindowLongPtr(wd->window,GWLP_USERDATA,(LONG_PTR)obj); 339 357 else return FALSE; 340 358 } 341 }else if ( obj->window_id==0){359 }else if (!obj->use_external_window){ 342 360 /* the window might need to be resized*/ 343 361 RECT cur; … … 489 507 void ms_display_set_window_id(MSDisplay *d, long id){ 490 508 d->window_id=id; 509 d->use_external_window=TRUE; 491 510 } 492 511 … … 828 847 } 829 848 849 static int video_out_get_native_window_id(MSFilter *f, void*arg){ 850 VideoOut *s=(VideoOut*)f->data; 851 unsigned long *id=(unsigned long*)arg; 852 *id=0; 853 if (s->display){ 854 *id=s->display->window_id; 855 return 0; 856 } 857 return -1; 858 } 859 830 860 static MSFilterMethod methods[]={ 831 861 { MS_FILTER_SET_VIDEO_SIZE , video_out_set_vsize }, … … 835 865 { MS_VIDEO_OUT_HANDLE_RESIZING , video_out_handle_resizing}, 836 866 { MS_VIDEO_OUT_ENABLE_MIRRORING , video_out_enable_mirroring}, 867 { MS_VIDEO_OUT_GET_NATIVE_WINDOW_ID, video_out_get_native_window_id}, 837 868 { 0 ,NULL} 838 869 }; -
linphone/mediastreamer2/src/videostream.c
r190 r213 346 346 } 347 347 348 unsigned long video_stream_get_native_window_id(VideoStream *stream){ 349 unsigned long id; 350 if (stream->output){ 351 if (ms_filter_call_method(stream->output,MS_VIDEO_OUT_GET_NATIVE_WINDOW_ID,&id)==0) 352 return id; 353 } 354 return 0; 355 } 348 356 349 357
Note: See TracChangeset
for help on using the changeset viewer.
