Changeset e2a614c82b502ea6c3cdee7d0fc39cbb9627041e
- Timestamp:
- 26/06/08 09:38:53 (5 months ago)
- git-parent:
[51f898a0eb6029c1922b2b4311f074245c99e963], [c617646c2e1a5675791200e7eeb54f111875a559]
- Files:
-
- NEWS (modified) (13 diffs)
- THANKS (modified) (1 diff)
- configure.ac (modified) (1 diff)
- extras/contrib/src/Distributions/win32.mak (modified) (1 diff)
- extras/contrib/src/Makefile (modified) (1 diff)
- extras/contrib/src/packages.mak (modified) (1 diff)
- extras/package/win32/vlc.win32.nsi.in (modified) (1 diff)
- include/vlc_interface.h (modified) (1 diff)
- modules/gui/qt4/components/extended_panels.cpp (modified) (1 prop)
- modules/gui/qt4/components/interface_widgets.cpp (modified) (11 diffs)
- modules/gui/qt4/components/interface_widgets.hpp (modified) (3 diffs)
- modules/gui/qt4/components/open_panels.cpp (modified) (9 diffs)
- modules/gui/qt4/components/open_panels.hpp (modified) (1 diff)
- modules/gui/qt4/dialogs/help.cpp (modified) (1 diff)
- modules/gui/qt4/main_interface.cpp (modified) (4 diffs)
- modules/gui/qt4/qt4.cpp (modified) (14 diffs)
- modules/gui/qt4/ui/open_capture.ui (modified) (3 diffs)
- modules/gui/qt4/ui/open_net.ui (modified) (1 diff)
- modules/video_filter/rss.c (modified) (1 diff)
- src/input/stream.c (modified) (1 diff)
- src/libvlc-module.c (modified) (1 diff)
- src/misc/update.c (modified) (13 diffs)
- src/misc/update.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
NEWS
r43019af rd89fff7 6 6 Important notes: 7 7 ---------------- 8 * This release will not work with Windows 98/ME and Mac OS X 10.3.9 (Panther) 8 9 * The HTTP interface is now only available on the local machine by default. 9 10 If you want to make it available from other machines, you will have to … … 16 17 - On Mac OS X, you can find it in VLC.app/Contents/MacOS/share/http/.hosts 17 18 and respectively in VLC.app/Contents/MacOS/share/http/old/.hosts 18 * This version of VLC contains a new interface for Windows and Linux. This19 interface lacks the "Streaming Wizard" that used to be present in VLC 0.8.6.20 It will be replaced by a better alternative in the next version.19 * This version of VLC contains a new interface for Windows and Linux. 20 This interface has a fullscreen controller. This interface lacks the 21 "Streaming Wizard" that used to be present in VLC 0.8.6. 21 22 If you absolutely need it, we advise you to keep VLC 0.8.6. 22 23 * The behavior of --sout-keep was changed. It's now activated by default. … … 34 35 of options is available to m3u playlists (CVE-2007-6683). 35 36 * The old access:url syntax is no longer supported. Use access://url instead. 36 E.g.: vlc:quit -> vlc://quit ;37 udp:@239.255.12.12 -> udp://@239.255.12.1237 E.g.: vlc:quit -> vlc://quit ; 38 udp:@239.255.12.12 -> udp://@239.255.12.12 38 39 * The ffmpeg module has been removed and replaced by avcodec, avformat, swscale 39 40 (or imgresample if you use a swscale-less ffmpeg build) and postproc modules. 40 * The web plugins ActiveX (IE)/Firefox/Mozilla/Safari now recognize the following 41 states: IDLE/CLOSE=0, OPENING=1, BUFFERING=2, PLAYING=3, PAUSED=4, STOPPING=5, 42 FORWARD=6, BACKWARD=7, ENDED=8, ERROR=9. With FORWARD and BACKWARD being 43 reserved for future implementations and are thus not functional atm. 41 * The web plugins ActiveX (IE)/Firefox/Mozilla/Safari now recognize the 42 following states: IDLE/CLOSE=0, OPENING=1, BUFFERING=2, PLAYING=3, PAUSED=4, 43 STOPPING=5, FORWARD=6, BACKWARD=7, ENDED=8, ERROR=9. With FORWARD and 44 BACKWARD being reserved for future implementations and are thus not 45 functional atm. 44 46 * Croping and padding in transcode are now done using the croppadd video 45 47 filter. For example: … … 57 59 Playlist: 58 60 * Vastly improved playlist support: 59 * Media library support61 * Media library creation to save all your playlist items 60 62 * "Live search" 61 63 * Shoutcast TV listings … … 75 77 * Input run time option (improved live stream recording) 76 78 * BDA devices access module for DVB-C/S/T capture cards on Microsoft Windows 77 * Re-written Screen access module for Mac OS X 79 * Re-written Screen access module for Mac OS X 78 80 using OpenGL instead of QuickDraw 79 81 * Screen module now supports partial screen capture and mouse following on X11. 80 * Experimental EyeTV access module (Mac OS X only)82 * Experimental EyeTV access module 81 83 This requires the user to install a plugin to EyeTV.app 82 84 (available as a separate download). 83 85 * RTMP input support 84 86 * QTKit-based Input module for Mac OS X allowing display and streaming of video 85 taken from all QuickTime-compatible video devices (no audio yet)87 taken from all iSight-labelled video cameras (no audio support) 86 88 * HTTP access now supports gzip compressed data and Digest Access 87 89 Authentication. … … 103 105 * CD+G karaoke Files support 104 106 * MXF files support 107 * OMA support 105 108 106 109 Decoders: … … 114 117 * New codec FOURCCs to support more specific files: 115 118 Avid, FCP, Sony, Samsung, ... 116 * Closed Caption Decoder (DVD, ReplayTV, TiVo, DVB/ATSC)117 119 * H.264 PAFF support 118 120 * DNxHD / VC-3 support 119 121 * NellyMoser ASAO support 120 122 * APE (Monkey audio) support 121 * VBI & EBU (Teletext) support122 123 * RealVideo support (with the RealVideo run-time) 123 124 124 125 Subtitles: 126 * Closed Caption Decoder (DVD, ReplayTV, TiVo, DVB/ATSC) 127 * VBI & EBU (Teletext) support (*nix, Mac OS) 125 128 * Ogg/Kate subtitles support 126 129 * AQTitle subtitles support … … 142 145 143 146 Video outputs and filters: 144 * New CoreAnimation output module (Mac OS X 10.5only)147 * New CoreAnimation-based output module (VLCKit framework on OS X only) 145 148 * Adjust, Invert and Distort (now split into Wave, Ripple, Gradient and 146 149 Psychedelic) video filters can now be streamed … … 181 184 182 185 Interfaces: 183 * Windows/Linux184 * Brand new interface for Linux and Windows, based on the Qt toolkit185 186 * All 186 187 * New Simple Preferences dialogs showing the most important settings in an … … 190 191 * Vastly improved Update checker 191 192 * Full support for meta data editing (ID3v2, Ogg/Vorbis, AAC, APEv1/2) 193 * Windows/Linux 194 * Brand new interface for Linux and Windows, based on the Qt toolkit 195 * Fullscreen controller (transparency on Linux+Composite) 192 196 * Mac OS X 193 197 * Improved video output features … … 196 200 * When playing Radio (live) streams, the current track is shown correctly 197 201 * Correct appearance on Macs using Aqua's graphite theme 202 * Simplified Extended Controls panel 198 203 * Ncurses: 199 204 * Correctly displays wide characters when using an UTF-8 locale, … … 217 222 218 223 Mac OS X Port: 219 * Mac OS X Framework that can be used to embed VLC in third party224 * Mac OS X Framework "VLCKit" that can be used to embed VLC in third party 220 225 applications (Google Summer of Code Student project, Mac OS X 10.5 only) 221 226 * New text renderer based on Quartz replacing the existing Freetype solution 222 227 * Complete compatibility with Mac OS X 10.5 Leopard 223 228 * It is now required to compile a fully featured build 224 * The support of Mac OS X 10.3.9 was discontinued.229 * The support of Mac OS X 10.3.9 and QuickTime 6.x was discontinued. 225 230 226 231 LibVLC: … … 948 953 with support for effects. 949 954 * Improved filter and subpictures support : 950 - New filters can be streamed.951 - "Subpicture filters" to overlay subpictures on video952 - Centralized scaling and blending955 - New filters can be streamed. 956 - "Subpicture filters" to overlay subpictures on video 957 - Centralized scaling and blending 953 958 * New filters : 954 - "time", to display current time955 - "marq", to display a marquee959 - "time", to display current time 960 - "marq", to display a marquee 956 961 957 962 Interfaces: THANKS
rd3b5afd r2f53d49 148 148 Loox Thefuture <loox.thefuture at gmail dot com> - Media key in X11 vout 149 149 Lorena Gomes - Catalan translation 150 Lukas Durfina <lukas.durfina at gmail.com> - qt4: full screen controller. teletext button fix.150 Lukas Durfina <lukas.durfina at gmail.com> - Qt4: full screen controller. Teletext button fix. Various fixes. 151 151 Mahrazi Mohd Kamal <mahrazi at gmail.com> - Malay Translation 152 152 Marc Nolette <nolette at videotron.ca> - PVR support in DirectShow input configure.ac
ra458b6a r7c37640 5591 5591 5592 5592 dnl 5593 dnl Microsoft Layer for Unicode for WIN9x/ME5594 dnl5595 if test "${SYS}" = "mingw32" -o "${SYS}" = "cygwin"5596 then5597 AC_CHECK_LIB(unicows, LoadUnicowsSymbol, [5598 VLC_ADD_LDFLAGS([vlc libvlc],[-Wl,--exclude-libs,libunicows.a -lunicows])5599 ])5600 fi5601 5602 dnl5603 5593 dnl gtk_main plugin 5604 5594 dnl extras/contrib/src/Distributions/win32.mak
r12af43c rdd39709 6 6 .png .gpg-error .gcrypt .opencdk .gnutls .mpcdec \ 7 7 .dvdnav .dvbpsi .wxwidgets .qt4_win32 .dirac .SDL_image \ 8 .dx_headers .dshow_headers .gecko-win32 . unicows .dca \8 .dx_headers .dshow_headers .gecko-win32 .dca \ 9 9 .lua .tag .fontconfig .portaudio \ 10 10 .aclocal extras/contrib/src/Makefile
rdcd8404 rdd39709 2313 2313 2314 2314 # *************************************************************************** 2315 # UNICOWS (Unicode support for WINME/98/95)2316 # ***************************************************************************2317 2318 libunicows-$(UNICOWS_VERSION).tar.gz:2319 $(WGET) $(UNICOWS_URL)2320 mv libunicows-$(UNICOWS_VERSION)-src.tar.gz $@ || true2321 2322 libunicows: libunicows-$(UNICOWS_VERSION).tar.gz2323 $(EXTRACT_GZ)2324 2325 .unicows: libunicows2326 (cd $</src; make -f makefile.mingw32 PATHSEP='/' $(HOSTCC) && cp -f ../lib/mingw32/libunicows.a $(PREFIX)/lib)2327 touch $@2328 2329 CLEAN_FILE += .unicows2330 CLEAN_PKG += libunicows2331 DISTCLEAN_PKG += libunicows-$(UNICOWS_VERSION).tar.gz2332 2333 # ***************************************************************************2334 2315 # TagLib read and editing of tags of popular audio formats 2335 2316 # *************************************************************************** extras/contrib/src/packages.mak
re586333 rdd39709 209 209 PTHREADS_VERSION=2-8-0 210 210 PTHREADS_URL=ftp://sources.redhat.com/pub/pthreads-win32/pthreads-w32-$(PTHREADS_VERSION)-release.tar.gz 211 UNICOWS_VERSION=1.1.1212 UNICOWS_URL=$(SF)/libunicows/libunicows-$(UNICOWS_VERSION)-src.tar.gz213 211 ZVBI_VERSION=0.2.30 214 212 ZVBI_URL=$(SF)/zapping/zvbi-$(ZVBI_VERSION).tar.bz2 extras/package/win32/vlc.win32.nsi.in
r117e2de r6f25cb7 638 638 !insertmacro MUI_LANGDLL_DISPLAY 639 639 640 ;Win98 detection641 ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion" VersionNumber642 StrCmp $R0 "4.9" lbl_win98643 644 lbl_win98:645 MessageBox MB_OK|MB_ICONQUESTION "Windows 98 ! Remember to install MSLU" IDOK646 647 640 FunctionEnd 648 641 include/vlc_interface.h
r138da19 r7b0d811 178 178 179 179 #define EXTENSIONS_AUDIO "*.a52;*.aac;*.ac3;*.dts;*.flac;*.m4a;*.m4p;*.mka;" \ 180 "*.mod;*.mp1;*.mp2;*.mp3;*.ogg;*.spx;*.wav;*.wma;*.xm" 180 "*.mod;*.mp1;*.mp2;*.mp3;*.ogg;*.oma;*.spx;" \ 181 "*.wav;*.wma;*.xm" 181 182 182 183 #define EXTENSIONS_VIDEO "*.asf;*.avi;*.divx;*.dv;*.flv;*.gxf;*.m1v;*.m2v;" \ modules/gui/qt4/components/extended_panels.cpp
- Property mode changed from 100755 to 100644
modules/gui/qt4/components/interface_widgets.cpp
r4f541d3 rc617646 66 66 videoSize.rwidth() = -1; 67 67 videoSize.rheight() = -1; 68 setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding ); 68 69 69 70 /* Black background is more coherent for a Video Widget IMVHO */ … … 75 76 76 77 /* The core can ask through a callback to show the video. */ 77 connect( this, SIGNAL(askVideoWidgetToShow()), this, SLOT(show()), Qt::BlockingQueuedConnection ); 78 79 /* The core can ask through a callback to resize the video */ 80 // CONNECT( this, askResize( int, int ), this, SetSizing( int, int ) ); 78 #if HAS_QT43 79 connect( this, SIGNAL(askVideoWidgetToShow( unsigned int, unsigned int)), 80 this, SLOT(SetSizing(unsigned int, unsigned int )), 81 Qt::BlockingQueuedConnection ); 82 #else 83 #error This is broken. Fix it with a QEventLoop with a processEvents () 84 connect( this, SIGNAL(askVideoWidgetToShow( unsigned int, unsigned int)), 85 this, SLOT(SetSizing(unsigned int, unsigned int )) ); 86 #endif 87 88 81 89 } 82 90 … … 116 124 { 117 125 msg_Dbg( p_intf, "Video was requested %i, %i", *pi_x, *pi_y ); 118 emit askVideoWidgetToShow( );126 emit askVideoWidgetToShow( *pi_width, *pi_height ); 119 127 if( p_vout ) 120 128 { … … 135 143 videoSize.rwidth() = w; 136 144 videoSize.rheight() = h; 145 if( isHidden() ) show(); 137 146 updateGeometry(); // Needed for deinterlace 138 147 } … … 462 471 BUTTON_SET_IMG( prevSectionButton, "", previous.png, "" ); 463 472 BUTTON_SET_IMG( nextSectionButton, "", next.png, "" ); 464 BUTTON_SET_IMG( menuButton, "", previous.png, "");473 BUTTON_SET_IMG( menuButton, "", previous.png, qtr( "Menu" ) ); 465 474 466 475 discFrame->hide(); … … 722 731 void ControlsWidget::setNavigation( int navigation ) 723 732 { 724 #define HELP_MENU N_( "Menu" )725 733 #define HELP_PCH N_( "Previous chapter" ) 726 734 #define HELP_NCH N_( "Next chapter" ) 727 #define HELP_PTR N_( "Previous track" )728 #define HELP_NTR N_( "Next track" )729 735 730 736 // 1 = chapter, 2 = title, 0 = no … … 873 879 : ControlsWidget( _p_i, _p_mi, b_advControls, b_shiny, true ), 874 880 i_lastPosX( -1 ), i_lastPosY( -1 ), i_hideTimeout( 1 ), 875 b_mouseIsOver( false ) 881 b_mouseIsOver( false ), b_isFullscreen( false ) 876 882 { 877 883 setWindowFlags( Qt::ToolTip ); … … 971 977 else 972 978 { 979 #ifdef WIN32TRICK 980 if ( windowOpacity() > 0.0 && !fscHidden ) 981 #else 973 982 if ( windowOpacity() > 0.0 ) 983 #endif 974 984 { 975 985 /* we should use 0.01 because of 100 pieces ^^^ … … 1008 1018 int type = event->type(); 1009 1019 1010 if ( type == FullscreenControlShow_Type )1020 if ( type == FullscreenControlShow_Type && b_isFullscreen ) 1011 1021 { 1012 1022 #ifdef WIN32TRICK … … 1145 1155 if ( var_GetBool( p_vout, "fullscreen" ) && !b_registered ) 1146 1156 { 1147 p_fs->SetHideTimeout( var_GetInteger( p_vout, "mouse-hide-timeout" ) ); 1157 p_fs->setHideTimeout( var_GetInteger( p_vout, "mouse-hide-timeout" ) ); 1158 p_fs->setIsFullscreen( true ); 1148 1159 var_AddCallback( p_vout, "mouse-moved", 1149 1160 showFullscreenControllCallback, (void *) p_fs ); … … 1153 1164 if ( !var_GetBool( p_vout, "fullscreen" ) && b_registered ) 1154 1165 { 1166 p_fs->setIsFullscreen( false ); 1167 p_fs->hide(); 1155 1168 var_DelCallback( p_vout, "mouse-moved", 1156 1169 showFullscreenControllCallback, (void *) p_fs ); 1157 1170 b_registered = false; 1158 1171 } 1159 1160 if ( !var_GetBool( p_vout, "fullscreen" ) )1161 p_fs->hide();1162 1172 1163 1173 return VLC_SUCCESS; modules/gui/qt4/components/interface_widgets.hpp
rec725cd rc617646 92 92 93 93 signals: 94 void askVideoWidgetToShow(); 95 //void askResize(); 94 void askVideoWidgetToShow( unsigned int, unsigned int ); 96 95 97 96 public slots: … … 252 251 virtual ~FullscreenControllerWidget(); 253 252 254 void SetHideTimeout( int hideTimeout ) { i_hideTimeout = hideTimeout; } 253 void setHideTimeout( int hideTimeout ) { i_hideTimeout = hideTimeout; } 254 void setIsFullscreen( bool isFS ) { b_isFullscreen = isFS; } 255 255 void regFullscreenCallback( vout_thread_t *p_vout ); 256 256 … … 285 285 int i_hideTimeout; /* FSC hiding timeout, same as mouse hiding timeout */ 286 286 bool b_mouseIsOver; 287 bool b_isFullscreen; 287 288 288 289 #ifdef WIN32TRICK modules/gui/qt4/components/open_panels.cpp
r8e756ce r2242c9a 411 411 412 412 /* CONNECTs */ 413 CONNECT( ui.protocolCombo, currentIndexChanged( int ),413 CONNECT( ui.protocolCombo, activated( int ), 414 414 this, updateProtocol( int ) ); 415 415 CONNECT( ui.portSpin, valueChanged( int ), this, updateMRL() ); … … 418 418 CONNECT( ui.ipv6, clicked(), this, updateMRL()); 419 419 420 ui.protocolCombo->addItem( "" ); 420 421 ui.protocolCombo->addItem("HTTP", QVariant("http")); 421 422 ui.protocolCombo->addItem("HTTPS", QVariant("https")); … … 425 426 ui.protocolCombo->addItem("UDP/RTP (unicast)", QVariant("udp")); 426 427 ui.protocolCombo->addItem("UDP/RTP (multicast)", QVariant("udp")); 428 ui.protocolCombo->addItem("RTMP", QVariant("rtmp")); 427 429 } 428 430 … … 434 436 435 437 /* update the widgets according the type of protocol */ 436 void NetOpenPanel::updateProtocol( int idx ) {438 void NetOpenPanel::updateProtocol( int idx_proto ) { 437 439 QString addr = ui.addressText->text(); 438 QString proto = ui.protocolCombo->itemData( idx ).toString(); 439 440 ui.timeShift->setEnabled( idx >= 5 ); 441 ui.ipv6->setEnabled( idx == 5 ); 442 ui.addressText->setEnabled( idx != 5 ); 443 ui.portSpin->setEnabled( idx >= 5 ); 440 QString proto = ui.protocolCombo->itemData( idx_proto ).toString(); 441 442 ui.timeShift->setEnabled( idx_proto == UDP_PROTO || 443 idx_proto == UDPM_PROTO ); 444 ui.ipv6->setEnabled( idx_proto == UDP_PROTO ); 445 ui.addressText->setEnabled( idx_proto != UDP_PROTO ); 446 ui.portSpin->setEnabled( idx_proto == UDP_PROTO || 447 idx_proto == UDPM_PROTO ); 448 449 if( idx_proto == NO_PROTO ) return; 444 450 445 451 /* If we already have a protocol in the address, replace it */ 446 if( addr.contains( "://")) { 447 msg_Err( p_intf, "replace"); 448 addr.replace( QRegExp("^.*://"), proto + "://"); 452 if( addr.contains( "://")) 453 { 454 if( idx_proto != UDPM_PROTO ) 455 addr.replace( QRegExp("^.*://@*"), proto + "://"); 456 else 457 addr.replace( QRegExp("^.*://"), proto + "://@"); 449 458 ui.addressText->setText( addr ); 450 459 } … … 456 465 QString addr = ui.addressText->text(); 457 466 addr = QUrl::toPercentEncoding( addr, ":/?#@!$&'()*+,;=" ); 458 int proto = ui.protocolCombo->currentIndex();459 460 if( addr.contains( "://") && ( proto != 5 || proto != 6 ))467 int idx_proto = ui.protocolCombo->currentIndex(); 468 469 if( addr.contains( "://")) 461 470 { 462 mrl = addr; 471 /* Match the correct item in the comboBox */ 472 ui.protocolCombo->setCurrentIndex( 473 ui.protocolCombo->findData( addr.section( ':', 0, 0 ) ) ); 474 475 if( idx_proto != UDP_PROTO || idx_proto != UDPM_PROTO ) 476 mrl = addr; 463 477 } 464 478 else 465 479 { 466 switch( proto ) {467 case 0:480 switch( idx_proto ) { 481 case HTTP_PROTO: 468 482 mrl = "http://" + addr; 469 483 emit methodChanged("http-caching"); 470 484 break; 471 case 1:485 case HTTPS_PROTO: 472 486 mrl = "https://" + addr; 473 487 emit methodChanged("http-caching"); 474 488 break; 475 case 3:489 case MMS_PROTO: 476 490 mrl = "mms://" + addr; 477 491 emit methodChanged("mms-caching"); 478 492 break; 479 case 2:493 case FTP_PROTO: 480 494 mrl = "ftp://" + addr; 481 495 emit methodChanged("ftp-caching"); 482 496 break; 483 case 4: /* RTSP */497 case RTSP_PROTO: 484 498 mrl = "rtsp://" + addr; 485 499 emit methodChanged("rtsp-caching"); 486 500 break; 487 case 5:501 case UDP_PROTO: 488 502 mrl = "udp://@"; 489 503 if( ui.ipv6->isEnabled() && ui.ipv6->isChecked() ) … … 494 508 emit methodChanged("udp-caching"); 495 509 break; 496 case 6: /* UDP multicast */510 case UDPM_PROTO: /* UDP multicast */ 497 511 mrl = "udp://@"; 498 512 /* Add [] to IPv6 */ … … 504 518 mrl += QString(":%1").arg( ui.portSpin->value() ); 505 519 emit methodChanged("udp-caching"); 520 case RTMP_PROTO: 521 mrl = "rtmp://" + addr; 522 emit methodChanged("rtmp-caching"); 523 break; 524 506 525 } 507 526 } … … 908 927 909 928 /* General connects */ 910 connect( ui.deviceCombo, SIGNAL( activated( int ) ),911 stackedDevLayout, SLOT( setCurrentIndex( int )) );912 connect( ui.deviceCombo, SIGNAL( activated( int )),913 stackedPropLayout, SLOT( setCurrentIndex( int )) );929 CONNECT( ui.deviceCombo, activated( int ) , 930 stackedDevLayout, setCurrentIndex( int ) ); 931 CONNECT( ui.deviceCombo, activated( int ), 932 stackedPropLayout, setCurrentIndex( int ) ); 914 933 CONNECT( ui.deviceCombo, activated( int ), this, updateMRL() ); 915 934 CONNECT( ui.deviceCombo, activated( int ), this, updateButtons() ); … … 1115 1134 advButtonBox->addButton( cancelButton, QDialogButtonBox::RejectRole ); 1116 1135 1117 gLayout->addWidget( advButtonBox, i_confsize + 1, 0, 1, -1);1136 mainLayout->addWidget( advButtonBox ); 1118 1137 1119 1138 /* Creation of the MRL */ modules/gui/qt4/components/open_panels.hpp
r3561b9b ra10edee 48 48 #define setSpinBoxFreq( spinbox ){ spinbox->setRange ( 0, INT_MAX ); \ 49 49 spinbox->setAccelerated( true ); } 50 51 enum 52 { 53 NO_PROTO, 54 HTTP_PROTO, 55 HTTPS_PROTO, 56 MMS_PROTO, 57 FTP_PROTO, 58 RTSP_PROTO, 59 UDP_PROTO, 60 UDPM_PROTO, 61 RTMP_PROTO 62 }; 63 50 64 51 65 enum modules/gui/qt4/dialogs/help.cpp
re03d215 r1444020 293 293 updateLabel->setText( qtr( "There is a new version of VLC :\n" ) 294 294 + qfu( p_release->psz_desc ) ); 295 296 /* Force the dialog to be shown */ 297 this->show(); 295 298 } 296 299 else modules/gui/qt4/main_interface.cpp
rea20728 r8c6064c 437 437 { 438 438 videoWidget = new VideoWidget( p_intf ); 439 mainLayout->insertWidget( 0, videoWidget ); 440 441 var_Create( p_intf, "window_widget", VLC_VAR_ADDRESS ); 442 vlc_value_t val; 443 val.p_address = this; 444 var_Set( p_intf, "window_widget", val ); 439 mainLayout->insertWidget( 0, videoWidget, 10 ); 445 440 } 446 441 … … 660 655 * This is wrong, and this is TEH reason to emit signals on those Video Functions 661 656 **/ 662 /* function called from ::DoRequest in order to show a nice VideoWidget663 at the good size */664 657 void *MainInterface::requestVideo( vout_thread_t *p_nvout, int *pi_x, 665 658 int *pi_y, unsigned int *pi_width, … … 693 686 videoIsActive = true; 694 687 695 emit askVideoToResize( *pi_width, *pi_height );688 // emit askVideoToResize( *pi_width, *pi_height ); 696 689 emit askUpdate(); 697 690 … … 701 694 } 702 695 703 /* function called from ::DoRequest in order to show a nice VideoWidget704 at the good size */705 696 void MainInterface::requestNotEmbeddedVideo( vout_thread_t *p_nvout ) 706 697 { modules/gui/qt4/qt4.cpp
r39cbef1 r12b1883 30 30 #include <QTranslator> 31 31 #include <QDate> 32 #include <QMutex> 33 #include <QMutexLocker> 34 #include <QWaitCondition> 35 #include <QPointer> 32 36 33 37 #include "qt4.hpp" … … 92 96 #define OPACITY_TEXT N_( "Windows opacity between 0.1 and 1." ) 93 97 #define OPACITY_LONGTEXT N_( "Sets the windows opacity between 0.1 and 1 " \ 94 "for main interface, playlist and extended panel." \98 "for main interface, playlist and extended panel."\ 95 99 " This option only works with Windows and " \ 96 100 "X11 with composite extensions." ) … … 229 233 #endif 230 234 235 /* Allocations */ 231 236 p_intf->p_sys = (intf_sys_t *)malloc( sizeof( intf_sys_t ) ); 232 237 if( !p_intf->p_sys ) … … 236 241 p_intf->pf_run = Run; 237 242 243 /* Access to the playlist */ 238 244 p_intf->p_sys->p_playlist = pl_Yield( p_intf ); 245 /* Listen to the messages */ 239 246 p_intf->p_sys->p_sub = msg_Subscribe( p_intf ); 240 247 248 var_Create( p_this, "window_widget", VLC_VAR_ADDRESS ); 241 249 return VLC_SUCCESS; 242 250 } … … 289 297 } 290 298 299 static QMutex windowLock; 300 static QWaitCondition windowWait; 301 291 302 static void Init( intf_thread_t *p_intf ) 292 303 { 304 vlc_value_t val; 293 305 char dummy[] = ""; 294 306 char *argv[] = { dummy }; … … 310 322 /* Start the QApplication here */ 311 323 QApplication *app = new QApplication( argc, argv , true ); 324 p_intf->p_sys->p_app = app; 325 326 /* Icon setting 327 FIXME: use a bigger icon ? */ 312 328 if( QDate::currentDate().dayOfYear() >= 354 ) 313 329 app->setWindowIcon( QIcon( QPixmap(vlc_christmas_xpm) ) ); 314 330 else 315 331 app->setWindowIcon( QIcon( QPixmap(vlc_xpm) ) ); 316 p_intf->p_sys->p_app = app; 317 318 // Initialize timers and the Dialog Provider 332 333 /* Initialize timers and the Dialog Provider */ 319 334 DialogsProvider::getInstance( p_intf ); 320 335 321 // Create the normal interface 336 QPointer<MainInterface> *miP = NULL; 337 338 /* Create the normal interface in non-DP mode */ 322 339 if( !p_intf->pf_show_dialog ) 323 340 { 324 MainInterface *p_mi = new MainInterface( p_intf ); 325 p_intf->p_sys->p_mi = p_mi; 341 p_intf->p_sys->p_mi = new MainInterface( p_intf ); 326 342 /* We don't show it because it is done in the MainInterface constructor 327 343 p_mi->show(); */ 328 344 p_intf->p_sys->b_isDialogProvider = false; 345 346 miP = new QPointer<MainInterface> (p_intf->p_sys->p_mi); 347 val.p_address = miP; 348 QMutexLocker locker (&windowLock); 349 var_Set (p_intf, "window_widget", val); 350 windowWait.wakeAll (); 329 351 } 330 352 else … … 334 356 } 335 357 358 /* Explain to the core how to show a dialog :D */ 359 p_intf->pf_show_dialog = ShowDialog; 336 360 337 361 #ifdef ENABLE_NLS … … 354 378 #endif //ENABLE_NLS 355 379 356 /* Explain to the core how to show a dialog :D */357 p_intf->pf_show_dialog = ShowDialog;358 359 380 /* Last settings */ 360 381 app->setQuitOnLastWindowClosed( false ); 361 382 362 /* retrieve last known path used in file browsing */383 /* Retrieve last known path used in file browsing */ 363 384 char *psz_path = config_GetPsz( p_intf, "qt-filedialog-path" ); 364 385 p_intf->p_sys->psz_filepath = EMPTY_STR( psz_path ) ? psz_path 365 : config_GetHomeDir();386 : config_GetHomeDir(); 366 387 367 388 #ifdef UPDATE_CHECK … … 386 407 /* And quit */ 387 408 409 if (miP) 410 { 411 QMutexLocker locker (&windowLock); 412 val.p_address = NULL; 413 var_Set (p_intf, "window_widget", val); 414 delete miP; 415 } 416 388 417 /* Destroy first the main interface because it is connected to some slots 389 418 in the MainInputManager */ … … 397 426 MainInputManager::killInstance(); 398 427 428 /* Delete the application */ 399 429 delete app; 400 430 431 /* Save the path */ 401 432 config_PutPsz( p_intf, "qt-filedialog-path", p_intf->p_sys->psz_filepath ); 402 433 free( psz_path ); … … 436 467 { 437 468 vout_window_t *wnd = (vout_window_t *)obj; 438 439 /* TODO: should probably be in the libvlc core instead: */440 if (!config_GetInt (obj, "embedded-video"))441 return VLC_EGENERIC;442 469 443 470 intf_thread_t *intf = (intf_thread_t *) … … 447 474 assert (intf->i_object_type == VLC_OBJECT_INTF); 448 475 449 var_Create (intf, "window_mutex", VLC_VAR_MUTEX);450 476 var_Create (intf, "window_widget", VLC_VAR_ADDRESS); 451 477 452 vlc_value_t lockval, ptrval; 453 var_Get (intf, "window_mutex", &lockval); 454 455 vlc_mutex_lock ((vlc_mutex_t *)lockval.p_address); 478 vlc_value_t ptrval; 479 480 windowLock.lock (); 456 481 msg_Dbg (obj, "waiting for interface..."); 457 do482 for (;;) 458 483 { 459 484 var_Get (intf, "window_widget", &ptrval); 460 /* FIXME A condition variable would be way more appropriate. */ 461 msleep (INTF_IDLE_SLEEP); 462 } while (ptrval.p_address == NULL); 463 464 msg_Dbg (obj, "requestiong window..."); 465 MainInterface *mi = (MainInterface *)ptrval.p_address; 466 467 wnd->handle = mi->requestVideo (wnd->vout, &wnd->pos_x, &wnd->pos_y, 468 &wnd->width, &wnd->height); 469 vlc_mutex_unlock ((vlc_mutex_t *)lockval.p_address); 485 if (ptrval.p_address != NULL) 486 break; 487 windowWait.wait (&windowLock); 488 } 489 490 msg_Dbg (obj, "requesting window..."); 491 QPointer<MainInterface> *miP = (QPointer<MainInterface> *)ptrval.p_address; 492 miP = new QPointer<MainInterface> (*miP); /* create our own copy */ 493 vlc_object_release (intf); 494 495 if (miP->isNull ()) 496 return VLC_EGENERIC; 497 498 if (config_GetInt (obj, "embedded-video") <= 0) 499 { 500 (*miP)->requestNotEmbeddedVideo (wnd->vout); 501 return VLC_EGENERIC; 502 } 503 504 wnd->handle = (*miP)->requestVideo (wnd->vout, &wnd->pos_x, &wnd->pos_y, 505 &wnd->width, &wnd->height); 506 windowLock.unlock (); 470 507 wnd->control = ControlWindow; 471 wnd->p_private = intf;508 wnd->p_private = miP; 472 509 return VLC_SUCCESS; 473 510 } … … 475 512 static int ControlWindow (vout_window_t *wnd, int query, va_list args) 476 513 { 477 intf_thread_t *intf = (intf_thread_t *)wnd->p_private; 478 intf->p_sys->p_mi->controlVideo (wnd->handle, query, args); 514 QPointer<MainInterface> *miP = (QPointer<MainInterface> *)wnd->p_private; 515 QMutexLocker locker (&windowLock); 516 517 if (miP->isNull ()) 518 return VLC_EGENERIC; 519 return (*miP)->controlVideo (wnd->handle, query, args); 479 520 } 480 521 … … 482 523 { 483 524 vout_window_t *wnd = (vout_window_t *)obj; 484 intf_thread_t *intf = (intf_thread_t *)obj->p_private; 485 486 intf->p_sys->p_mi->releaseVideo (wnd->handle); 487 vlc_object_release (intf); 488 } 525 QPointer<MainInterface> *miP = (QPointer<MainInterface> *)wnd->p_private; 526 QMutexLocker locker (&windowLock); 527 528 if (!miP->isNull ()) 529 (*miP)->releaseVideo (wnd->handle); 530 delete miP; 531 } modules/gui/qt4/ui/open_capture.ui
r2d22d0e re190119 8 8 <y>0</y> 9 9 <width>358</width> 10 <height>1 63</height>10 <height>177</height> 11 11 </rect> 12 12 </property> … … 53 53 </widget> 54 54 </item> 55 <item row="4" column="0" > 55 <item row="5" column="0" colspan="4" > 56 <spacer> 57 <property name="orientation" > 58 <enum>Qt::Vertical</enum> 59 </property> 60 <property name="sizeType" > 61 <enum>QSizePolicy::MinimumExpanding</enum> 62 </property> 63 <property name="sizeHint" stdset="0" > 64 <size> 65 <width>20</width> 66 <height>30</height> 67 </size> 68 </property> 69 </spacer> 70 </item> 71 <item row="4" column="3" > 56 72 <widget class="QPushButton" name="advancedButton" > 57 73 <property name="toolTip" > … … 63 79 </widget> 64 80 </item> 65 <item row="5" column="0" colspan="4" >66 <spacer>67 <property name="orientation" >68 <enum>Qt::Vertical</enum>69 </property>70 <property name="sizeType" >71 <enum>QSizePolicy::MinimumExpanding</enum>
