Changeset e2a614c82b502ea6c3cdee7d0fc39cbb9627041e

Show
Ignore:
Timestamp:
26/06/08 09:38:53 (5 months ago)
Author:
Ilkka Ollakka <ileoo@videolan.org>
git-committer:
Ilkka Ollakka <ileoo@videolan.org> 1214465933 +0300
git-parent:

[51f898a0eb6029c1922b2b4311f074245c99e963], [c617646c2e1a5675791200e7eeb54f111875a559]

git-author:
Ilkka Ollakka <ileoo@videolan.org> 1214465933 +0300
Message:

Merge branch 'master' of git@git.videolan.org:vlc

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • NEWS

    r43019af rd89fff7  
    66Important notes: 
    77---------------- 
     8 * This release will not work with Windows 98/ME and Mac OS X 10.3.9 (Panther) 
    89 * The HTTP interface is now only available on the local machine by default. 
    910   If you want to make it available from other machines, you will have to 
     
    1617   - On Mac OS X, you can find it in VLC.app/Contents/MacOS/share/http/.hosts 
    1718     and respectively in VLC.app/Contents/MacOS/share/http/old/.hosts 
    18  * This version of VLC contains a new interface for Windows and Linux. This 
    19    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. 
    2122   If you absolutely need it, we advise you to keep VLC 0.8.6. 
    2223 * The behavior of --sout-keep was changed. It's now activated by default. 
     
    3435   of options is available to m3u playlists (CVE-2007-6683). 
    3536 * 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.12 
     37    E.g.:  vlc:quit -> vlc://quit ;  
     38           udp:@239.255.12.12 -> udp://@239.255.12.12 
    3839 * The ffmpeg module has been removed and replaced by avcodec, avformat, swscale 
    3940   (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. 
    4446 * Croping and padding in transcode are now done using the croppadd video 
    4547   filter. For example: 
     
    5759Playlist: 
    5860 * Vastly improved playlist support: 
    59     * Media library support 
     61    * Media library creation to save all your playlist items 
    6062    * "Live search" 
    6163    * Shoutcast TV listings 
     
    7577 * Input run time option (improved live stream recording) 
    7678 * 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  
    7880   using OpenGL instead of QuickDraw 
    7981 * 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 
    8183   This requires the user to install a plugin to EyeTV.app 
    8284   (available as a separate download). 
    8385 * RTMP input support 
    8486 * 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) 
    8688 * HTTP access now supports gzip compressed data and Digest Access 
    8789   Authentication. 
     
    103105 * CD+G karaoke Files support 
    104106 * MXF files support 
     107 * OMA support 
    105108 
    106109Decoders: 
     
    114117 * New codec FOURCCs to support more specific files: 
    115118   Avid, FCP, Sony, Samsung, ... 
    116  * Closed Caption Decoder (DVD, ReplayTV, TiVo, DVB/ATSC) 
    117119 * H.264 PAFF support 
    118120 * DNxHD / VC-3 support 
    119121 * NellyMoser ASAO support 
    120122 * APE (Monkey audio) support 
    121  * VBI & EBU (Teletext) support 
    122123 * RealVideo support (with the RealVideo run-time) 
    123124 
    124125Subtitles: 
     126 * Closed Caption Decoder (DVD, ReplayTV, TiVo, DVB/ATSC) 
     127 * VBI & EBU (Teletext) support (*nix, Mac OS) 
    125128 * Ogg/Kate subtitles support 
    126129 * AQTitle subtitles support 
     
    142145 
    143146Video outputs and filters: 
    144  * New CoreAnimation output module (Mac OS X 10.5 only) 
     147 * New CoreAnimation-based output module (VLCKit framework on OS X only) 
    145148 * Adjust, Invert and Distort (now split into Wave, Ripple, Gradient and 
    146149   Psychedelic) video filters can now be streamed 
     
    181184 
    182185Interfaces: 
    183  * Windows/Linux 
    184    * Brand new interface for Linux and Windows, based on the Qt toolkit 
    185186 * All 
    186187   * New Simple Preferences dialogs showing the most important settings in an 
     
    190191   * Vastly improved Update checker 
    191192   * 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) 
    192196 * Mac OS X 
    193197   * Improved video output features 
     
    196200   * When playing Radio (live) streams, the current track is shown correctly 
    197201   * Correct appearance on Macs using Aqua's graphite theme 
     202   * Simplified Extended Controls panel 
    198203 * Ncurses: 
    199204   * Correctly displays wide characters when using an UTF-8 locale,  
     
    217222 
    218223Mac OS X Port: 
    219  * Mac OS X Framework that can be used to embed VLC in third party 
     224 * Mac OS X Framework "VLCKit" that can be used to embed VLC in third party 
    220225   applications (Google Summer of Code Student project, Mac OS X 10.5 only) 
    221226 * New text renderer based on Quartz replacing the existing Freetype solution 
    222227 * Complete compatibility with Mac OS X 10.5 Leopard 
    223228   * 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. 
    225230 
    226231LibVLC: 
     
    948953   with support for effects. 
    949954 * Improved filter and subpictures support : 
    950    - New filters can be streamed. 
    951    - "Subpicture filters" to overlay subpictures on video  
    952    - Centralized scaling and blending 
     955    - New filters can be streamed. 
     956    - "Subpicture filters" to overlay subpictures on video  
     957    - Centralized scaling and blending 
    953958 * New filters :  
    954    - "time", to display current time  
    955    - "marq", to display a marquee 
     959    - "time", to display current time  
     960    - "marq", to display a marquee 
    956961 
    957962Interfaces: 
  • THANKS

    rd3b5afd r2f53d49  
    148148Loox Thefuture <loox.thefuture at gmail dot com> - Media key in X11 vout 
    149149Lorena Gomes - Catalan translation 
    150 Lukas Durfina <lukas.durfina at gmail.com> - qt4: full screen controller. teletext button fix
     150Lukas Durfina <lukas.durfina at gmail.com> - Qt4: full screen controller. Teletext button fix. Various fixes
    151151Mahrazi Mohd Kamal <mahrazi at gmail.com> - Malay Translation 
    152152Marc Nolette <nolette at videotron.ca> - PVR support in DirectShow input 
  • configure.ac

    ra458b6a r7c37640  
    55915591 
    55925592dnl 
    5593 dnl Microsoft Layer for Unicode for WIN9x/ME 
    5594 dnl 
    5595 if test "${SYS}" = "mingw32" -o "${SYS}" = "cygwin" 
    5596 then 
    5597     AC_CHECK_LIB(unicows, LoadUnicowsSymbol, [ 
    5598         VLC_ADD_LDFLAGS([vlc libvlc],[-Wl,--exclude-libs,libunicows.a -lunicows]) 
    5599     ]) 
    5600 fi 
    5601  
    5602 dnl 
    56035593dnl  gtk_main plugin 
    56045594dnl 
  • extras/contrib/src/Distributions/win32.mak

    r12af43c rdd39709  
    66        .png .gpg-error .gcrypt .opencdk .gnutls .mpcdec \ 
    77        .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 \ 
    99        .lua .tag .fontconfig .portaudio \ 
    1010        .aclocal 
  • extras/contrib/src/Makefile

    rdcd8404 rdd39709  
    23132313 
    23142314# *************************************************************************** 
    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 $@ || true 
    2321  
    2322 libunicows: libunicows-$(UNICOWS_VERSION).tar.gz 
    2323     $(EXTRACT_GZ) 
    2324  
    2325 .unicows: libunicows 
    2326     (cd $</src; make -f makefile.mingw32 PATHSEP='/' $(HOSTCC) && cp -f ../lib/mingw32/libunicows.a $(PREFIX)/lib) 
    2327     touch $@ 
    2328  
    2329 CLEAN_FILE += .unicows 
    2330 CLEAN_PKG += libunicows 
    2331 DISTCLEAN_PKG += libunicows-$(UNICOWS_VERSION).tar.gz 
    2332  
    2333 # *************************************************************************** 
    23342315# TagLib read and editing of tags of popular audio formats 
    23352316# *************************************************************************** 
  • extras/contrib/src/packages.mak

    re586333 rdd39709  
    209209PTHREADS_VERSION=2-8-0 
    210210PTHREADS_URL=ftp://sources.redhat.com/pub/pthreads-win32/pthreads-w32-$(PTHREADS_VERSION)-release.tar.gz 
    211 UNICOWS_VERSION=1.1.1 
    212 UNICOWS_URL=$(SF)/libunicows/libunicows-$(UNICOWS_VERSION)-src.tar.gz 
    213211ZVBI_VERSION=0.2.30 
    214212ZVBI_URL=$(SF)/zapping/zvbi-$(ZVBI_VERSION).tar.bz2 
  • extras/package/win32/vlc.win32.nsi.in

    r117e2de r6f25cb7  
    638638  !insertmacro MUI_LANGDLL_DISPLAY 
    639639 
    640   ;Win98 detection 
    641   ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion" VersionNumber 
    642   StrCmp $R0 "4.9" lbl_win98 
    643  
    644   lbl_win98: 
    645      MessageBox MB_OK|MB_ICONQUESTION "Windows 98 ! Remember to install MSLU" IDOK 
    646  
    647640FunctionEnd 
    648641 
  • include/vlc_interface.h

    r138da19 r7b0d811  
    178178 
    179179#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" 
    181182 
    182183#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  
    6666    videoSize.rwidth() = -1; 
    6767    videoSize.rheight() = -1; 
     68    setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding ); 
    6869 
    6970    /* Black background is more coherent for a Video Widget IMVHO */ 
     
    7576 
    7677    /* 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 
    8189} 
    8290 
     
    116124{ 
    117125    msg_Dbg( p_intf, "Video was requested %i, %i", *pi_x, *pi_y ); 
    118     emit askVideoWidgetToShow(); 
     126    emit askVideoWidgetToShow( *pi_width, *pi_height ); 
    119127    if( p_vout ) 
    120128    { 
     
    135143    videoSize.rwidth() = w; 
    136144    videoSize.rheight() = h; 
     145    if( isHidden() ) show(); 
    137146    updateGeometry(); // Needed for deinterlace 
    138147} 
     
    462471    BUTTON_SET_IMG( prevSectionButton, "", previous.png, "" ); 
    463472    BUTTON_SET_IMG( nextSectionButton, "", next.png, "" ); 
    464     BUTTON_SET_IMG( menuButton, "", previous.png, "" ); 
     473    BUTTON_SET_IMG( menuButton, "", previous.png, qtr( "Menu" ) ); 
    465474 
    466475    discFrame->hide(); 
     
    722731void ControlsWidget::setNavigation( int navigation ) 
    723732{ 
    724 #define HELP_MENU N_( "Menu" ) 
    725733#define HELP_PCH N_( "Previous chapter" ) 
    726734#define HELP_NCH N_( "Next chapter" ) 
    727 #define HELP_PTR N_( "Previous track" ) 
    728 #define HELP_NTR N_( "Next track" ) 
    729735 
    730736    // 1 = chapter, 2 = title, 0 = no 
     
    873879        : ControlsWidget( _p_i, _p_mi, b_advControls, b_shiny, true ), 
    874880        i_lastPosX( -1 ), i_lastPosY( -1 ), i_hideTimeout( 1 ), 
    875         b_mouseIsOver( false ) 
     881        b_mouseIsOver( false ), b_isFullscreen( false ) 
    876882{ 
    877883    setWindowFlags( Qt::ToolTip ); 
     
    971977    else 
    972978    { 
     979#ifdef WIN32TRICK 
     980         if ( windowOpacity() > 0.0 && !fscHidden ) 
     981#else 
    973982         if ( windowOpacity() > 0.0 ) 
     983#endif 
    974984         { 
    975985             /* we should use 0.01 because of 100 pieces ^^^ 
     
    10081018    int type = event->type(); 
    10091019 
    1010     if ( type == FullscreenControlShow_Type
     1020    if ( type == FullscreenControlShow_Type && b_isFullscreen
    10111021    { 
    10121022        #ifdef WIN32TRICK 
     
    11451155    if ( var_GetBool( p_vout, "fullscreen" ) && !b_registered ) 
    11461156    { 
    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 ); 
    11481159        var_AddCallback( p_vout, "mouse-moved", 
    11491160                        showFullscreenControllCallback, (void *) p_fs ); 
     
    11531164    if ( !var_GetBool( p_vout, "fullscreen" ) && b_registered ) 
    11541165    { 
     1166        p_fs->setIsFullscreen( false ); 
     1167        p_fs->hide(); 
    11551168        var_DelCallback( p_vout, "mouse-moved", 
    11561169                        showFullscreenControllCallback, (void *) p_fs ); 
    11571170        b_registered = false; 
    11581171    } 
    1159  
    1160     if ( !var_GetBool( p_vout, "fullscreen" ) ) 
    1161         p_fs->hide(); 
    11621172 
    11631173    return VLC_SUCCESS; 
  • modules/gui/qt4/components/interface_widgets.hpp

    rec725cd rc617646  
    9292 
    9393signals: 
    94     void askVideoWidgetToShow(); 
    95     //void askResize(); 
     94    void askVideoWidgetToShow( unsigned int, unsigned int ); 
    9695 
    9796public slots: 
     
    252251    virtual ~FullscreenControllerWidget(); 
    253252 
    254     void SetHideTimeout( int hideTimeout ) { i_hideTimeout = hideTimeout; } 
     253    void setHideTimeout( int hideTimeout ) { i_hideTimeout = hideTimeout; } 
     254    void setIsFullscreen( bool isFS ) { b_isFullscreen = isFS; } 
    255255    void regFullscreenCallback( vout_thread_t *p_vout ); 
    256256 
     
    285285    int i_hideTimeout;  /* FSC hiding timeout, same as mouse hiding timeout */ 
    286286    bool b_mouseIsOver; 
     287    bool b_isFullscreen; 
    287288 
    288289#ifdef WIN32TRICK 
  • modules/gui/qt4/components/open_panels.cpp

    r8e756ce r2242c9a  
    411411 
    412412    /* CONNECTs */ 
    413     CONNECT( ui.protocolCombo, currentIndexChanged( int ), 
     413    CONNECT( ui.protocolCombo, activated( int ), 
    414414             this, updateProtocol( int ) ); 
    415415    CONNECT( ui.portSpin, valueChanged( int ), this, updateMRL() ); 
     
    418418    CONNECT( ui.ipv6, clicked(), this, updateMRL()); 
    419419 
     420    ui.protocolCombo->addItem( "" ); 
    420421    ui.protocolCombo->addItem("HTTP", QVariant("http")); 
    421422    ui.protocolCombo->addItem("HTTPS", QVariant("https")); 
     
    425426    ui.protocolCombo->addItem("UDP/RTP (unicast)", QVariant("udp")); 
    426427    ui.protocolCombo->addItem("UDP/RTP (multicast)", QVariant("udp")); 
     428    ui.protocolCombo->addItem("RTMP", QVariant("rtmp")); 
    427429} 
    428430 
     
    434436 
    435437/* update the widgets according the type of protocol */ 
    436 void NetOpenPanel::updateProtocol( int idx ) { 
     438void NetOpenPanel::updateProtocol( int idx_proto ) { 
    437439    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; 
    444450 
    445451    /* 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 + "://@"); 
    449458        ui.addressText->setText( addr ); 
    450459    } 
     
    456465    QString addr = ui.addressText->text(); 
    457466    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( "://")
    461470    { 
    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; 
    463477    } 
    464478    else 
    465479    { 
    466         switch( proto ) { 
    467         case 0
     480        switch( idx_proto ) { 
     481        case HTTP_PROTO
    468482            mrl = "http://" + addr; 
    469483            emit methodChanged("http-caching"); 
    470484            break; 
    471         case 1
     485        case HTTPS_PROTO
    472486            mrl = "https://" + addr; 
    473487            emit methodChanged("http-caching"); 
    474488            break; 
    475         case 3
     489        case MMS_PROTO
    476490            mrl = "mms://" + addr; 
    477491            emit methodChanged("mms-caching"); 
    478492            break; 
    479         case 2
     493        case FTP_PROTO
    480494            mrl = "ftp://" + addr; 
    481495            emit methodChanged("ftp-caching"); 
    482496            break; 
    483         case 4: /* RTSP */ 
     497        case RTSP_PROTO: 
    484498            mrl = "rtsp://" + addr; 
    485499            emit methodChanged("rtsp-caching"); 
    486500            break; 
    487         case 5
     501        case UDP_PROTO
    488502            mrl = "udp://@"; 
    489503            if( ui.ipv6->isEnabled() && ui.ipv6->isChecked() ) 
     
    494508            emit methodChanged("udp-caching"); 
    495509            break; 
    496         case 6: /* UDP multicast */ 
     510        case UDPM_PROTO: /* UDP multicast */ 
    497511            mrl = "udp://@"; 
    498512            /* Add [] to IPv6 */ 
     
    504518            mrl += QString(":%1").arg( ui.portSpin->value() ); 
    505519            emit methodChanged("udp-caching"); 
     520        case RTMP_PROTO: 
     521            mrl = "rtmp://" + addr; 
     522            emit methodChanged("rtmp-caching"); 
     523            break; 
     524 
    506525        } 
    507526    } 
     
    908927 
    909928    /* 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 ) ); 
    914933    CONNECT( ui.deviceCombo, activated( int ), this, updateMRL() ); 
    915934    CONNECT( ui.deviceCombo, activated( int ), this, updateButtons() ); 
     
    11151134    advButtonBox->addButton( cancelButton, QDialogButtonBox::RejectRole ); 
    11161135 
    1117     gLayout->addWidget( advButtonBox, i_confsize + 1, 0, 1, -1 ); 
     1136    mainLayout->addWidget( advButtonBox ); 
    11181137 
    11191138    /* Creation of the MRL */ 
  • modules/gui/qt4/components/open_panels.hpp

    r3561b9b ra10edee  
    4848#define setSpinBoxFreq( spinbox ){ spinbox->setRange ( 0, INT_MAX ); \ 
    4949    spinbox->setAccelerated( true ); } 
     50 
     51enum 
     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 
    5064 
    5165enum 
  • modules/gui/qt4/dialogs/help.cpp

    re03d215 r1444020  
    293293            updateLabel->setText( qtr( "There is a new version of VLC :\n" ) 
    294294                                + qfu( p_release->psz_desc )  ); 
     295 
     296            /* Force the dialog to be shown */ 
     297            this->show(); 
    295298        } 
    296299        else 
  • modules/gui/qt4/main_interface.cpp

    rea20728 r8c6064c  
    437437    { 
    438438        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 ); 
    445440    } 
    446441 
     
    660655 * This is wrong, and this is TEH reason to emit signals on those Video Functions 
    661656 **/ 
    662 /* function called from ::DoRequest in order to show a nice VideoWidget 
    663     at the good size */ 
    664657void *MainInterface::requestVideo( vout_thread_t *p_nvout, int *pi_x, 
    665658                                   int *pi_y, unsigned int *pi_width, 
     
    693686        videoIsActive = true; 
    694687 
    695         emit askVideoToResize( *pi_width, *pi_height ); 
     688//        emit askVideoToResize( *pi_width, *pi_height ); 
    696689        emit askUpdate(); 
    697690 
     
    701694} 
    702695 
    703 /* function called from ::DoRequest in order to show a nice VideoWidget 
    704     at the good size */ 
    705696void MainInterface::requestNotEmbeddedVideo( vout_thread_t *p_nvout ) 
    706697{ 
  • modules/gui/qt4/qt4.cpp

    r39cbef1 r12b1883  
    3030#include <QTranslator> 
    3131#include <QDate> 
     32#include <QMutex> 
     33#include <QMutexLocker> 
     34#include <QWaitCondition> 
     35#include <QPointer> 
    3236 
    3337#include "qt4.hpp" 
     
    9296#define OPACITY_TEXT N_( "Windows opacity between 0.1 and 1." ) 
    9397#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."
    9599                             " This option only works with Windows and " \ 
    96100                             "X11 with composite extensions." ) 
     
    229233#endif 
    230234 
     235    /* Allocations */ 
    231236    p_intf->p_sys = (intf_sys_t *)malloc( sizeof( intf_sys_t ) ); 
    232237    if( !p_intf->p_sys ) 
     
    236241    p_intf->pf_run = Run; 
    237242 
     243    /* Access to the playlist */ 
    238244    p_intf->p_sys->p_playlist = pl_Yield( p_intf ); 
     245    /* Listen to the messages */ 
    239246    p_intf->p_sys->p_sub = msg_Subscribe( p_intf ); 
    240247 
     248    var_Create( p_this, "window_widget", VLC_VAR_ADDRESS ); 
    241249    return VLC_SUCCESS; 
    242250} 
     
    289297} 
    290298 
     299static QMutex windowLock; 
     300static QWaitCondition windowWait; 
     301 
    291302static void Init( intf_thread_t *p_intf ) 
    292303{ 
     304    vlc_value_t val; 
    293305    char dummy[] = ""; 
    294306    char *argv[] = { dummy }; 
     
    310322    /* Start the QApplication here */ 
    311323    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 ? */ 
    312328    if( QDate::currentDate().dayOfYear() >= 354 ) 
    313329        app->setWindowIcon( QIcon( QPixmap(vlc_christmas_xpm) ) ); 
    314330    else 
    315331        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 */ 
    319334    DialogsProvider::getInstance( p_intf ); 
    320335 
    321     // Create the normal interface 
     336    QPointer<MainInterface> *miP = NULL; 
     337 
     338    /* Create the normal interface in non-DP mode */ 
    322339    if( !p_intf->pf_show_dialog ) 
    323340    { 
    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 ); 
    326342        /* We don't show it because it is done in the MainInterface constructor 
    327343        p_mi->show(); */ 
    328344        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 (); 
    329351    } 
    330352    else 
     
    334356    } 
    335357 
     358    /* Explain to the core how to show a dialog :D */ 
     359    p_intf->pf_show_dialog = ShowDialog; 
    336360 
    337361#ifdef ENABLE_NLS 
     
    354378#endif  //ENABLE_NLS 
    355379 
    356     /* Explain to the core how to show a dialog :D */ 
    357     p_intf->pf_show_dialog = ShowDialog; 
    358  
    359380    /* Last settings */ 
    360381    app->setQuitOnLastWindowClosed( false ); 
    361382 
    362     /*        retrieve last known path used in file browsing */ 
     383    /* Retrieve last known path used in file browsing */ 
    363384    char *psz_path = config_GetPsz( p_intf, "qt-filedialog-path" ); 
    364385    p_intf->p_sys->psz_filepath = EMPTY_STR( psz_path ) ? psz_path 
    365                            : config_GetHomeDir(); 
     386                                                        : config_GetHomeDir(); 
    366387 
    367388#ifdef UPDATE_CHECK 
     
    386407    /* And quit */ 
    387408 
     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 
    388417    /* Destroy first the main interface because it is connected to some slots 
    389418       in the MainInputManager */ 
     
    397426    MainInputManager::killInstance(); 
    398427 
     428    /* Delete the application */ 
    399429    delete app; 
    400430 
     431    /* Save the path */ 
    401432    config_PutPsz( p_intf, "qt-filedialog-path", p_intf->p_sys->psz_filepath ); 
    402433    free( psz_path ); 
     
    436467{ 
    437468    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; 
    442469 
    443470    intf_thread_t *intf = (intf_thread_t *) 
     
    447474    assert (intf->i_object_type == VLC_OBJECT_INTF); 
    448475 
    449     var_Create (intf, "window_mutex", VLC_VAR_MUTEX); 
    450476    var_Create (intf, "window_widget", VLC_VAR_ADDRESS); 
    451477 
    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 (); 
    456481    msg_Dbg (obj, "waiting for interface..."); 
    457     do 
     482    for (;;) 
    458483    { 
    459484        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 (); 
    470507    wnd->control = ControlWindow; 
    471     wnd->p_private = intf
     508    wnd->p_private = miP
    472509    return VLC_SUCCESS; 
    473510} 
     
    475512static int ControlWindow (vout_window_t *wnd, int query, va_list args) 
    476513{ 
    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); 
    479520} 
    480521 
     
    482523{ 
    483524    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  
    88    <y>0</y> 
    99    <width>358</width> 
    10     <height>163</height> 
     10    <height>177</height> 
    1111   </rect> 
    1212  </property> 
     
    5353    </widget> 
    5454   </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" > 
    5672    <widget class="QPushButton" name="advancedButton" > 
    5773     <property name="toolTip" > 
     
    6379    </widget> 
    6480   </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>