Ignore:
Timestamp:
May 3, 2016, 2:14:41 PM (9 years ago)
Author:
Silvan Scherrer
Message:

smplayer: update vendor to version 16.4

File:
1 edited

Legend:

Unmodified
Added
Removed
  • smplayer/vendor/current/src/mplayerprocess.cpp

    r163 r175  
    11/*  smplayer, GUI front-end for mplayer.
    2     Copyright (C) 2006-2014 Ricardo Villalba <rvm@users.sourceforge.net>
     2    Copyright (C) 2006-2016 Ricardo Villalba <rvm@users.sourceforge.net>
    33
    44    This program is free software; you can redistribute it and/or modify
     
    3131#define TOO_CHAPTERS_WORKAROUND
    3232
    33 MplayerProcess::MplayerProcess(QObject * parent) : MyProcess(parent)
     33MplayerProcess::MplayerProcess(QObject * parent)
     34        : PlayerProcess(parent)
     35        , notified_mplayer_is_running(false)
     36        , received_end_of_file(false)
     37        , last_sub_id(-1)
     38        , mplayer_svn(-1) // Not found yet
     39#if NOTIFY_SUB_CHANGES
     40        , subtitle_info_received(false)
     41        , subtitle_info_changed(false)
     42#endif
     43#if NOTIFY_AUDIO_CHANGES
     44        , audio_info_changed(false)
     45#endif
     46        , dvd_current_title(-1)
     47        , br_current_title(-1)
    3448{
    35 #if NOTIFY_SUB_CHANGES
    36         qRegisterMetaType<SubTracks>("SubTracks");
    37 #endif
    38 
    39 #if NOTIFY_AUDIO_CHANGES
    40         qRegisterMetaType<Tracks>("Tracks");
    41 #endif
     49        player_id = PlayerID::MPLAYER;
    4250
    4351        connect( this, SIGNAL(lineAvailable(QByteArray)),
     
    4957        connect( this, SIGNAL(error(QProcess::ProcessError)),
    5058             this, SLOT(gotError(QProcess::ProcessError)) );
    51 
    52         notified_mplayer_is_running = false;
    53         last_sub_id = -1;
    54         mplayer_svn = -1; // Not found yet
    5559}
    5660
     
    8185        MyProcess::start();
    8286
    83 #if !defined(Q_OS_OS2)
    8487        return waitForStarted();
    85 #else
    86         bool r = waitForStarted();
    87         if (r) {
    88                 pidMP = QProcess::pid();
    89                 qDebug("MPlayer PID %i", pidMP);
    90                 MPpipeOpen();
    91         }
    92         return r;
    93 #endif
    9488}
    9589
    96 void MplayerProcess::writeToStdin(QString text) {
    97         if (isRunning()) {
    98                 //qDebug("MplayerProcess::writeToStdin");
    99 #if !defined(Q_OS_OS2)
    100                 #ifdef Q_OS_WIN
    101                 write( text.toUtf8() + "\n");
    102                 #else
    103                 write( text.toLocal8Bit() + "\n");
    104                 #endif
    105 #else
    106                 MPpipeWrite( text.toLocal8Bit() + "\n");
    107 #endif
    108         } else {
    109                 qWarning("MplayerProcess::writeToStdin: process not running");
    110         }
    111 #ifdef Q_OS_OS2
    112         if (text == "quit" || text == "quit\n") {
    113                 MPpipeClose();
    114         }
    115 #endif
    116 }
    117 
    118 #ifdef Q_OS_OS2
    119 void MplayerProcess::MPpipeOpen() {
    120         char szPipeName[ 100 ];
    121         sprintf( szPipeName, "\\PIPE\\MPLAYER\\%x", pidMP );
    122         DosCreateNPipe( szPipeName, &hpipe, NP_ACCESS_DUPLEX, 1, 1024, 1024, 0 );
    123 }
    124 
    125 void MplayerProcess::MPpipeClose( void ) {
    126         DosClose( hpipe );
    127 }
    128 
    129 void MplayerProcess::MPpipeWrite( const QByteArray text ) {
    130         // MPlayer quitted ?
    131         if ( !isRunning() )
    132                 return;
    133 
    134 // as things could hang when pipe communication is done direct here, i do a seperate thread for it
    135         pipeThread = new PipeThread(text, hpipe);
    136    
    137         pipeThread->start();
    138         while (!pipeThread->isRunning() && !pipeThread->isFinished()) {
    139                 qDebug("we sleep");
    140                 DosSleep(10);
    141         }
    142 // we wait for max 2 seconds for the thread to be ended (we to this with max 20 loops)
    143         int count = 0;
    144         while (!pipeThread->wait(100) && count < 20) {
    145                 count ++;
    146         }
    147         if (count >= 20) {
    148                 pipeThread->terminate();
    149                 qDebug("pipe communication terminated");
    150         }
    151         delete pipeThread;
    152 }
    153 #endif
    15490
    15591static QRegExp rx_av("^[AV]: *([0-9,:.-]+)");
     
    314250                //if (line.startsWith("MPlayer2")) line = "mplayer2 d0305da (C) 2000-2012 MPlayer & mplayer2 teams";
    315251                //if (line.startsWith("MPlayer SVN")) line = "MPlayer svn r34540 (Ubuntu), built with gcc-4.6 (C) 2000-2012 MPlayer Team";
     252                //if (line.startsWith("MPlayer SVN")) line = "MPlayer 1.2-4.8 (C) 2000-2015 MPlayer Team";
    316253
    317254                // Emulates unknown version
     
    437374                                        audios.addLang(ID, lang);
    438375                        } else {
    439                                 qDebug("MplayerProcess::parseLine: audio %d exists, modifing it", ID);
     376                                qDebug("MplayerProcess::parseLine: audio %d exists, modifying it", ID);
    440377
    441378                                if (t == "NAME") {
     
    927864}
    928865
    929 #ifdef Q_OS_OS2
    930 PipeThread::PipeThread(const QByteArray t, const HPIPE pipe) {
    931         text = t;
    932         hpipe = pipe;
    933 }
    934 
    935 PipeThread::~PipeThread() {
    936 }
    937 
    938 void PipeThread::run() {
    939         ULONG cbActual;
    940         APIRET rc = NO_ERROR;
    941 
    942         rc = DosConnectNPipe( hpipe );
    943         if (rc != NO_ERROR)
    944                 return;
    945 
    946 //      qDebug("pipe connected");   
    947         DosWrite( hpipe, text.data(), strlen( text.data() ), &cbActual );
    948 
    949         // Wait for ACK
    950         DosRead( hpipe, &cbActual, sizeof( ULONG ), &cbActual );
    951         DosDisConnectNPipe( hpipe );
    952         return;
    953 }
    954 #endif
    955 
     866#include "mplayeroptions.cpp"
    956867#include "moc_mplayerprocess.cpp"
Note: See TracChangeset for help on using the changeset viewer.