author | llornkcor <llornkcor> | 2002-06-17 12:54:54 (UTC) |
---|---|---|
committer | llornkcor <llornkcor> | 2002-06-17 12:54:54 (UTC) |
commit | 282007e58a8a038a0db042341528510e73ac80fc (patch) (side-by-side diff) | |
tree | f1a16c9a6a380bdc4217e9f92ac6ef6128d10717 | |
parent | 2917d7481dc8c1b053e3212a699e64948a90ec4c (diff) | |
download | opie-282007e58a8a038a0db042341528510e73ac80fc.zip opie-282007e58a8a038a0db042341528510e73ac80fc.tar.gz opie-282007e58a8a038a0db042341528510e73ac80fc.tar.bz2 |
fixes for goofy crap going on
-rw-r--r-- | core/multimedia/opieplayer/audiodevice.cpp | 292 | ||||
-rw-r--r-- | core/multimedia/opieplayer/audiowidget.cpp | 2 | ||||
-rw-r--r-- | core/multimedia/opieplayer/loopcontrol.cpp | 384 | ||||
-rw-r--r-- | core/multimedia/opieplayer/mediaplayer.cpp | 1 | ||||
-rw-r--r-- | core/multimedia/opieplayer/mediaplayerstate.cpp | 80 | ||||
-rw-r--r-- | core/multimedia/opieplayer/playlistwidget.cpp | 43 |
6 files changed, 406 insertions, 396 deletions
diff --git a/core/multimedia/opieplayer/audiodevice.cpp b/core/multimedia/opieplayer/audiodevice.cpp index 3262e38..4c5f12d 100644 --- a/core/multimedia/opieplayer/audiodevice.cpp +++ b/core/multimedia/opieplayer/audiodevice.cpp @@ -1,20 +1,20 @@ /********************************************************************** -** Copyright (C) 2000 Trolltech AS. All rights reserved. -** -** This file is part of Qtopia Environment. -** -** This file may be distributed and/or modified under the terms of the -** GNU General Public License version 2 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -** See http://www.trolltech.com/gpl/ for GPL licensing information. -** -** Contact info@trolltech.com if any conditions of this licensing are -** not clear to you. -** -**********************************************************************/ + ** Copyright (C) 2000 Trolltech AS. All rights reserved. + ** + ** This file is part of Qtopia Environment. + ** + ** This file may be distributed and/or modified under the terms of the + ** GNU General Public License version 2 as published by the Free Software + ** Foundation and appearing in the file LICENSE.GPL included in the + ** packaging of this file. + ** + ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE + ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + ** + ** See http://www.trolltech.com/gpl/ for GPL licensing information. + ** + ** Contact info@trolltech.com if any conditions of this licensing are + ** not clear to you. + ** + **********************************************************************/ // L.J.Potter added better error code Fri 02-15-2002 14:37:47 @@ -32,8 +32,7 @@ -#ifdef Q_WS_WIN -#include <windows.h> -#include <mmsystem.h> -#include <mmreg.h> -#endif - +// #ifdef Q_WS_WIN +// #include <windows.h> +// #include <mmsystem.h> +// #include <mmreg.h> +// #endif #if defined(Q_WS_X11) || defined(Q_WS_QWS) @@ -48,7 +47,7 @@ -#if defined(Q_OS_WIN32) -static const int expectedBytesPerMilliSecond = 2 * 2 * 44000 / 1000; -static const int timerResolutionMilliSeconds = 30; -static const int sound_fragment_bytes = timerResolutionMilliSeconds * expectedBytesPerMilliSecond; -#else +// #if defined(Q_OS_WIN32) +// static const int expectedBytesPerMilliSecond = 2 * 2 * 44000 / 1000; +// static const int timerResolutionMilliSeconds = 30; +// static const int sound_fragment_bytes = timerResolutionMilliSeconds * expectedBytesPerMilliSecond; +// #else # if defined(QT_QWS_IPAQ) @@ -59,3 +58,3 @@ static const int sound_fragment_shift = 16; static const int sound_fragment_bytes = (1<<sound_fragment_shift); -#endif +//#endif @@ -69,3 +68,3 @@ public: unsigned int bufferSize; -#ifndef Q_OS_WIN32 +//#ifndef Q_OS_WIN32 bool can_GETOSPACE; @@ -73,3 +72,3 @@ public: unsigned int unwritten; -#endif +//#endif @@ -99,19 +98,19 @@ void AudioDevice::getVolume( unsigned int& leftVolume, unsigned int& rightVolume unsigned int volume; -#ifdef Q_OS_WIN32 - HWAVEOUT handle; - WAVEFORMATEX formatData; - formatData.cbSize = sizeof(WAVEFORMATEX); - formatData.wFormatTag = WAVE_FORMAT_PCM; - formatData.nAvgBytesPerSec = 4 * 44000; - formatData.nBlockAlign = 4; - formatData.nChannels = 2; - formatData.nSamplesPerSec = 44000; - formatData.wBitsPerSample = 16; - waveOutOpen(&handle, WAVE_MAPPER, &formatData, 0L, 0L, CALLBACK_NULL); - if ( waveOutGetVolume( handle, (LPDWORD)&volume ) ) -// qDebug( "get volume of audio device failed" ); - waveOutClose( handle ); - leftVolume = volume & 0xFFFF; - rightVolume = volume >> 16; -#else +// #ifdef Q_OS_WIN32 +// HWAVEOUT handle; +// WAVEFORMATEX formatData; +// formatData.cbSize = sizeof(WAVEFORMATEX); +// formatData.wFormatTag = WAVE_FORMAT_PCM; +// formatData.nAvgBytesPerSec = 4 * 44000; +// formatData.nBlockAlign = 4; +// formatData.nChannels = 2; +// formatData.nSamplesPerSec = 44000; +// formatData.wBitsPerSample = 16; +// waveOutOpen(&handle, WAVE_MAPPER, &formatData, 0L, 0L, CALLBACK_NULL); +// if ( waveOutGetVolume( handle, (LPDWORD)&volume ) ) +// // qDebug( "get volume of audio device failed" ); +// waveOutClose( handle ); +// leftVolume = volume & 0xFFFF; +// rightVolume = volume >> 16; +// #else int mixerHandle = open( "/dev/mixer", O_RDWR ); @@ -119,3 +118,3 @@ void AudioDevice::getVolume( unsigned int& leftVolume, unsigned int& rightVolume if(ioctl( mixerHandle, MIXER_READ(0), &volume )==-1) - perror("ioctl(\"MIXER_READ\")"); + perror("ioctl(\"MIXER_READ\")"); close( mixerHandle ); @@ -125,3 +124,3 @@ void AudioDevice::getVolume( unsigned int& leftVolume, unsigned int& rightVolume rightVolume = ((volume & 0xFF00) << 8) / 101; -#endif +//#endif } @@ -132,27 +131,27 @@ void AudioDevice::setVolume( unsigned int leftVolume, unsigned int rightVolume, if ( muted ) { - AudioDevicePrivate::leftVolume = leftVolume; - AudioDevicePrivate::rightVolume = rightVolume; - leftVolume = 0; - rightVolume = 0; + AudioDevicePrivate::leftVolume = leftVolume; + AudioDevicePrivate::rightVolume = rightVolume; + leftVolume = 0; + rightVolume = 0; } else { leftVolume = ( (int) leftVolume < 0 ) ? 0 : (( leftVolume > 0xFFFF ) ? 0xFFFF : leftVolume ); - rightVolume = ( (int)rightVolume < 0 ) ? 0 : (( rightVolume > 0xFFFF ) ? 0xFFFF : rightVolume ); + rightVolume = ( (int)rightVolume < 0 ) ? 0 : (( rightVolume > 0xFFFF ) ? 0xFFFF : rightVolume ); } -#ifdef Q_OS_WIN32 - HWAVEOUT handle; - WAVEFORMATEX formatData; - formatData.cbSize = sizeof(WAVEFORMATEX); - formatData.wFormatTag = WAVE_FORMAT_PCM; - formatData.nAvgBytesPerSec = 4 * 44000; - formatData.nBlockAlign = 4; - formatData.nChannels = 2; - formatData.nSamplesPerSec = 44000; - formatData.wBitsPerSample = 16; - waveOutOpen(&handle, WAVE_MAPPER, &formatData, 0L, 0L, CALLBACK_NULL); - unsigned int volume = (rightVolume << 16) | leftVolume; - if ( waveOutSetVolume( handle, volume ) ) -// qDebug( "set volume of audio device failed" ); - waveOutClose( handle ); -#else - // Volume can be from 0 to 100 which is 101 distinct values +// #ifdef Q_OS_WIN32 +// HWAVEOUT handle; +// WAVEFORMATEX formatData; +// formatData.cbSize = sizeof(WAVEFORMATEX); +// formatData.wFormatTag = WAVE_FORMAT_PCM; +// formatData.nAvgBytesPerSec = 4 * 44000; +// formatData.nBlockAlign = 4; +// formatData.nChannels = 2; +// formatData.nSamplesPerSec = 44000; +// formatData.wBitsPerSample = 16; +// waveOutOpen(&handle, WAVE_MAPPER, &formatData, 0L, 0L, CALLBACK_NULL); +// unsigned int volume = (rightVolume << 16) | leftVolume; +// if ( waveOutSetVolume( handle, volume ) ) +// // qDebug( "set volume of audio device failed" ); +// waveOutClose( handle ); +// #else + // Volume can be from 0 to 100 which is 101 distinct values unsigned int rV = (rightVolume * 101) >> 16; @@ -171,4 +170,4 @@ void AudioDevice::setVolume( unsigned int leftVolume, unsigned int rightVolume, # else - // This is the way this has to be done now I guess, doesn't allow for - // independant right and left channel setting, or setting for different outputs + // This is the way this has to be done now I guess, doesn't allow for + // independant right and left channel setting, or setting for different outputs Config cfg("Sound"); @@ -178,6 +177,6 @@ void AudioDevice::setVolume( unsigned int leftVolume, unsigned int rightVolume, -#endif +//#endif // qDebug( "setting volume to: 0x%x", volume ); #if ( defined Q_WS_QWS || defined(_WS_QWS_) ) && !defined(QT_NO_COP) - // Send notification that the volume has changed + // Send notification that the volume has changed QCopEnvelope( "QPE/System", "volumeChange(bool)" ) << muted; @@ -190,5 +189,5 @@ void AudioDevice::setVolume( unsigned int leftVolume, unsigned int rightVolume, AudioDevice::AudioDevice( unsigned int f, unsigned int chs, unsigned int bps ) { - qDebug("creating new audio device"); + qDebug("creating new audio device"); QCopEnvelope( "QPE/System", "volumeChange(bool)" ) << TRUE; - d = new AudioDevicePrivate; + d = new AudioDevicePrivate; d->frequency = f; @@ -211,8 +210,8 @@ AudioDevice::AudioDevice( unsigned int f, unsigned int chs, unsigned int bps ) { #endif - if ( ( d->handle = ::open( "/dev/dsp", O_WRONLY ) ) < 0 ) { - perror("open(\"/dev/dsp\") sending to /dev/null instead"); - d->handle = ::open( "/dev/null", O_WRONLY ); - } + if ( ( d->handle = ::open( "/dev/dsp", O_WRONLY ) ) < 0 ) { + perror("open(\"/dev/dsp\") sending to /dev/null instead"); + d->handle = ::open( "/dev/null", O_WRONLY ); + } #ifdef KEEP_DEVICE_OPEN - AudioDevicePrivate::dspFd = d->handle; + AudioDevicePrivate::dspFd = d->handle; } else { @@ -243,8 +242,8 @@ AudioDevice::AudioDevice( unsigned int f, unsigned int chs, unsigned int bps ) { - //if ( chs != d->channels ) qDebug( "Wanted %d, got %d channels", chs, d->channels ); - //if ( f != d->frequency ) qDebug( "wanted %dHz, got %dHz", f, d->frequency ); - //if ( capabilities & DSP_CAP_BATCH ) qDebug( "Sound card has local buffer" ); - //if ( capabilities & DSP_CAP_REALTIME )qDebug( "Sound card has realtime sync" ); - //if ( capabilities & DSP_CAP_TRIGGER ) qDebug( "Sound card has precise trigger" ); - //if ( capabilities & DSP_CAP_MMAP ) qDebug( "Sound card can mmap" ); + //if ( chs != d->channels ) qDebug( "Wanted %d, got %d channels", chs, d->channels ); + //if ( f != d->frequency ) qDebug( "wanted %dHz, got %dHz", f, d->frequency ); + //if ( capabilities & DSP_CAP_BATCH ) qDebug( "Sound card has local buffer" ); + //if ( capabilities & DSP_CAP_REALTIME )qDebug( "Sound card has realtime sync" ); + //if ( capabilities & DSP_CAP_TRIGGER ) qDebug( "Sound card has precise trigger" ); + //if ( capabilities & DSP_CAP_MMAP ) qDebug( "Sound card can mmap" ); QCopEnvelope( "QPE/System", "volumeChange(bool)" ) << FALSE; @@ -256,7 +255,7 @@ AudioDevice::~AudioDevice() { qDebug("destryo audiodevice"); - QCopEnvelope( "QPE/System", "volumeChange(bool)" ) << TRUE; + QCopEnvelope( "QPE/System", "volumeChange(bool)" ) << TRUE; -#ifdef Q_OS_WIN32 - waveOutClose( (HWAVEOUT)d->handle ); -#else +// #ifdef Q_OS_WIN32 +// waveOutClose( (HWAVEOUT)d->handle ); +// #else # ifndef KEEP_DEVICE_OPEN @@ -266,3 +265,4 @@ AudioDevice::~AudioDevice() { delete d; -#endif +//#endif + QCopEnvelope( "QPE/System", "volumeChange(bool)" ) << FALSE; @@ -279,16 +279,16 @@ void AudioDevice::write( char *buffer, unsigned int length ) { -#ifdef Q_OS_WIN32 - // returns immediately and (to be implemented) emits completedIO() when finished writing - WAVEHDR *lpWaveHdr = (WAVEHDR *)malloc( sizeof(WAVEHDR) ); - // maybe the buffer should be copied so that this fool proof, but its a performance hit - lpWaveHdr->lpData = buffer; - lpWaveHdr->dwBufferLength = length; - lpWaveHdr->dwFlags = 0L; - lpWaveHdr->dwLoops = 0L; - waveOutPrepareHeader( (HWAVEOUT)d->handle, lpWaveHdr, sizeof(WAVEHDR) ); - // waveOutWrite returns immediately. the data is sent in the background. - if ( waveOutWrite( (HWAVEOUT)d->handle, lpWaveHdr, sizeof(WAVEHDR) ) ) - qDebug( "failed to write block to audio device" ); - // emit completedIO(); -#else +// #ifdef Q_OS_WIN32 +// // returns immediately and (to be implemented) emits completedIO() when finished writing +// WAVEHDR *lpWaveHdr = (WAVEHDR *)malloc( sizeof(WAVEHDR) ); +// // maybe the buffer should be copied so that this fool proof, but its a performance hit +// lpWaveHdr->lpData = buffer; +// lpWaveHdr->dwBufferLength = length; +// lpWaveHdr->dwFlags = 0L; +// lpWaveHdr->dwLoops = 0L; +// waveOutPrepareHeader( (HWAVEOUT)d->handle, lpWaveHdr, sizeof(WAVEHDR) ); +// // waveOutWrite returns immediately. the data is sent in the background. +// if ( waveOutWrite( (HWAVEOUT)d->handle, lpWaveHdr, sizeof(WAVEHDR) ) ) +// qDebug( "failed to write block to audio device" ); +// // emit completedIO(); +// #else int t = ::write( d->handle, buffer, length ); @@ -296,7 +296,7 @@ void AudioDevice::write( char *buffer, unsigned int length ) if ( t != (int)length) { - qDebug("Ahhh!! memcpys 1"); - memcpy(d->unwrittenBuffer,buffer+t,length-t); - d->unwritten = length-t; + qDebug("Ahhh!! memcpys 1"); + memcpy(d->unwrittenBuffer,buffer+t,length-t); + d->unwritten = length-t; } -#endif +//#endif } @@ -329,30 +329,30 @@ unsigned int AudioDevice::canWrite() const { -#ifdef Q_OS_WIN32 - return bufferSize(); // Any better? -#else +// #ifdef Q_OS_WIN32 +// return bufferSize(); // Any better? +// #else audio_buf_info info; if ( d->can_GETOSPACE && ioctl(d->handle,SNDCTL_DSP_GETOSPACE,&info) ) { - d->can_GETOSPACE = FALSE; - fcntl( d->handle, F_SETFL, O_NONBLOCK ); + d->can_GETOSPACE = FALSE; + fcntl( d->handle, F_SETFL, O_NONBLOCK ); } if ( d->can_GETOSPACE ) { - int t = info.fragments * sound_fragment_bytes; - return QMIN(t,(int)bufferSize()); + int t = info.fragments * sound_fragment_bytes; + return QMIN(t,(int)bufferSize()); } else { - if ( d->unwritten ) { - int t = ::write( d->handle, d->unwrittenBuffer, d->unwritten ); - if ( t<0 ) t = 0; - if ( (unsigned)t!=d->unwritten ) { - memcpy(d->unwrittenBuffer,d->unwrittenBuffer+t,d->unwritten-t); - d->unwritten -= t; - } else { - d->unwritten = 0; - } - } - if ( d->unwritten ) - return 0; - else - return d->bufferSize; + if ( d->unwritten ) { + int t = ::write( d->handle, d->unwrittenBuffer, d->unwritten ); + if ( t<0 ) t = 0; + if ( (unsigned)t!=d->unwritten ) { + memcpy(d->unwrittenBuffer,d->unwrittenBuffer+t,d->unwritten-t); + d->unwritten -= t; + } else { + d->unwritten = 0; + } + } + if ( d->unwritten ) + return 0; + else + return d->bufferSize; } -#endif +//#endif } @@ -361,17 +361,17 @@ unsigned int AudioDevice::canWrite() const int AudioDevice::bytesWritten() { -#ifdef Q_OS_WIN32 - MMTIME pmmt = { TIME_BYTES, 0 }; - if ( ( waveOutGetPosition( (HWAVEOUT)d->handle, &pmmt, sizeof(MMTIME) ) != MMSYSERR_NOERROR ) || ( pmmt.wType != TIME_BYTES ) ) { - qDebug( "failed to get audio device position" ); - return -1; - } - return pmmt.u.cb; -#else +// #ifdef Q_OS_WIN32 +// MMTIME pmmt = { TIME_BYTES, 0 }; +// if ( ( waveOutGetPosition( (HWAVEOUT)d->handle, &pmmt, sizeof(MMTIME) ) != MMSYSERR_NOERROR ) || ( pmmt.wType != TIME_BYTES ) ) { +// qDebug( "failed to get audio device position" ); +// return -1; +// } +// return pmmt.u.cb; +// #else int buffered = 0; if ( ioctl( d->handle, SNDCTL_DSP_GETODELAY, &buffered ) ) { - qDebug( "failed to get audio device position" ); - return -1; + qDebug( "failed to get audio device position" ); + return -1; } return buffered; -#endif +//#endif } diff --git a/core/multimedia/opieplayer/audiowidget.cpp b/core/multimedia/opieplayer/audiowidget.cpp index ac8c935..54e7ceb 100644 --- a/core/multimedia/opieplayer/audiowidget.cpp +++ b/core/multimedia/opieplayer/audiowidget.cpp @@ -145,2 +145,3 @@ void AudioWidget::sliderReleased() { void AudioWidget::setPosition( long i ) { +// qDebug("set position %d",i); updateSlider( i, mediaPlayerState->length() ); @@ -155,3 +156,2 @@ void AudioWidget::setLength( long max ) { void AudioWidget::setView( char view ) { - if (mediaPlayerState->isStreaming) { diff --git a/core/multimedia/opieplayer/loopcontrol.cpp b/core/multimedia/opieplayer/loopcontrol.cpp index 3171c4b..70e4a78 100644 --- a/core/multimedia/opieplayer/loopcontrol.cpp +++ b/core/multimedia/opieplayer/loopcontrol.cpp @@ -1,20 +1,20 @@ /********************************************************************** -** Copyright (C) 2000 Trolltech AS. All rights reserved. -** -** This file is part of Qtopia Environment. -** -** This file may be distributed and/or modified under the terms of the -** GNU General Public License version 2 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -** See http://www.trolltech.com/gpl/ for GPL licensing information. -** -** Contact info@trolltech.com if any conditions of this licensing are -** not clear to you. -** -**********************************************************************/ + ** Copyright (C) 2000 Trolltech AS. All rights reserved. + ** + ** This file is part of Qtopia Environment. + ** + ** This file may be distributed and/or modified under the terms of the + ** GNU General Public License version 2 as published by the Free Software + ** Foundation and appearing in the file LICENSE.GPL included in the + ** packaging of this file. + ** + ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE + ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + ** + ** See http://www.trolltech.com/gpl/ for GPL licensing information. + ** + ** Contact info@trolltech.com if any conditions of this licensing are + ** not clear to you. + ** + **********************************************************************/ // L.J.Potter added changes Fri 02-15-2002 @@ -61,6 +61,6 @@ public: Mutex() { - pthread_mutexattr_t attr; - pthread_mutexattr_init( &attr ); - pthread_mutex_init( &mutex, &attr ); - pthread_mutexattr_destroy( &attr ); + pthread_mutexattr_t attr; + pthread_mutexattr_init( &attr ); + pthread_mutex_init( &mutex, &attr ); + pthread_mutexattr_destroy( &attr ); } @@ -68,3 +68,3 @@ public: ~Mutex() { - pthread_mutex_destroy( &mutex ); + pthread_mutex_destroy( &mutex ); } @@ -72,3 +72,3 @@ public: void lock() { - pthread_mutex_lock( &mutex ); + pthread_mutex_lock( &mutex ); } @@ -76,3 +76,3 @@ public: void unlock() { - pthread_mutex_unlock( &mutex ); + pthread_mutex_unlock( &mutex ); } @@ -86,6 +86,6 @@ void *startAudioThread( void *ptr ) { while ( TRUE ) { - if ( threadOkToGo && mpegView->moreAudio ) - mpegView->startAudio(); - else - usleep( 10000 ); // Semi-buzy-wait till we are playing again + if ( threadOkToGo && mpegView->moreAudio ) + mpegView->startAudio(); + else + usleep( 10000 ); // Semi-buzy-wait till we are playing again } @@ -99,3 +99,3 @@ Mutex *audioMutex; LoopControl::LoopControl( QObject *parent, const char *name ) - : QObject( parent, name ) { + : QObject( parent, name ) { isMuted = FALSE; @@ -108,11 +108,11 @@ LoopControl::LoopControl( QObject *parent, const char *name ) #ifdef USE_REALTIME_AUDIO_THREAD - // Attempt to set it to real-time round robin + // Attempt to set it to real-time round robin if ( pthread_attr_setschedpolicy( &audio_attr, SCHED_RR ) == 0 ) { - sched_param params; - params.sched_priority = 50; - pthread_attr_setschedparam(&audio_attr,¶ms); + sched_param params; + params.sched_priority = 50; + pthread_attr_setschedparam(&audio_attr,¶ms); } else { - qDebug( "Error setting up a realtime thread, reverting to using a normal thread." ); - pthread_attr_destroy(&audio_attr); - pthread_attr_init(&audio_attr); + qDebug( "Error setting up a realtime thread, reverting to using a normal thread." ); + pthread_attr_destroy(&audio_attr); + pthread_attr_init(&audio_attr); } @@ -136,10 +136,10 @@ void LoopControl::timerEvent( QTimerEvent *te ) { if ( te->timerId() == videoId ) - startVideo(); + startVideo(); if ( te->timerId() == sliderId ) { - if ( hasAudioChannel && !hasVideoChannel && moreAudio ) { - mediaPlayerState->updatePosition( audioSampleCounter ); - } else if ( hasVideoChannel && moreVideo ) { - mediaPlayerState->updatePosition( current_frame ); - } + if ( hasAudioChannel && !hasVideoChannel && moreAudio ) { + mediaPlayerState->updatePosition( audioSampleCounter ); + } else if ( hasVideoChannel && moreVideo ) { + mediaPlayerState->updatePosition( current_frame ); + } } @@ -155,24 +155,24 @@ void LoopControl::setPosition( long pos ) { audioMutex->lock(); - +// qDebug("Loop control %d", pos); if ( hasVideoChannel && hasAudioChannel ) { - playtime.restart(); - playtime = playtime.addMSecs( long((double)-pos * 1000.0 / framerate) ); - current_frame = pos + 1; - mediaPlayerState->curDecoder()->videoSetFrame( current_frame, stream ); - prev_frame = current_frame - 1; - currentSample = (int)( (double)current_frame * freq / framerate ); - mediaPlayerState->curDecoder()->audioSetSample( currentSample, stream ); - audioSampleCounter = currentSample - 1; + playtime.restart(); + playtime = playtime.addMSecs( long((double)-pos * 1000.0 / framerate) ); + current_frame = pos + 1; + mediaPlayerState->curDecoder()->videoSetFrame( current_frame, stream ); + prev_frame = current_frame - 1; + currentSample = (int)( (double)current_frame * freq / framerate ); + mediaPlayerState->curDecoder()->audioSetSample( currentSample, stream ); + audioSampleCounter = currentSample - 1; } else if ( hasVideoChannel ) { - playtime.restart(); - playtime = playtime.addMSecs( long((double)-pos * 1000.0 / framerate) ); - current_frame = pos + 1; - mediaPlayerState->curDecoder()->videoSetFrame( current_frame, stream ); - prev_frame = current_frame - 1; + playtime.restart(); + playtime = playtime.addMSecs( long((double)-pos * 1000.0 / framerate) ); + current_frame = pos + 1; + mediaPlayerState->curDecoder()->videoSetFrame( current_frame, stream ); + prev_frame = current_frame - 1; } else if ( hasAudioChannel ) { - playtime.restart(); - playtime = playtime.addMSecs( long((double)-pos * 1000.0 / freq) ); - currentSample = pos + 1; - mediaPlayerState->curDecoder()->audioSetSample( currentSample, stream ); - audioSampleCounter = currentSample - 1; + playtime.restart(); + playtime = playtime.addMSecs( long((double)-pos * 1000.0 / freq) ); + currentSample = pos + 1; + mediaPlayerState->curDecoder()->audioSetSample( currentSample, stream ); + audioSampleCounter = currentSample - 1; } @@ -189,28 +189,28 @@ void LoopControl::startVideo() { - if ( hasAudioChannel && !isMuted ) { + if ( hasAudioChannel && !isMuted ) { - current_frame = long( playtime.elapsed() * framerate / 1000 ); + current_frame = long( playtime.elapsed() * framerate / 1000 ); - if ( prev_frame != -1 && current_frame <= prev_frame ) - return; + if ( prev_frame != -1 && current_frame <= prev_frame ) + return; - } else { - // Don't skip - current_frame++; - } + } else { + // Don't skip + current_frame++; + } - if ( prev_frame == -1 || current_frame > prev_frame ) { - if ( current_frame > prev_frame + 1 ) { - mediaPlayerState->curDecoder()->videoSetFrame( current_frame, stream ); - } - moreVideo = videoUI->playVideo(); - prev_frame = current_frame; - } + if ( prev_frame == -1 || current_frame > prev_frame ) { + if ( current_frame > prev_frame + 1 ) { + mediaPlayerState->curDecoder()->videoSetFrame( current_frame, stream ); + } + moreVideo = videoUI->playVideo(); + prev_frame = current_frame; + } - } else { + } else { - moreVideo = FALSE; - killTimer( videoId ); + moreVideo = FALSE; + killTimer( videoId ); - } + } @@ -222,3 +222,2 @@ void LoopControl::startAudio() { -//qDebug("start audio"); audioMutex->lock(); @@ -226,36 +225,36 @@ void LoopControl::startAudio() { - if ( !isMuted && mediaPlayerState->curDecoder() ) { + if ( !isMuted && mediaPlayerState->curDecoder() ) { - currentSample = audioSampleCounter + 1; + currentSample = audioSampleCounter + 1; - if ( currentSample != audioSampleCounter + 1 ) - qDebug("out of sync with decoder %i %i", currentSample, audioSampleCounter); + if ( currentSample != audioSampleCounter + 1 ) + qDebug("out of sync with decoder %i %i", currentSample, audioSampleCounter); - long samplesRead = 0; - bool readOk=mediaPlayerState->curDecoder()->audioReadSamples( (short*)audioBuffer, channels, 1024, samplesRead, stream ); - long sampleWeShouldBeAt = long( playtime.elapsed() ) * freq / 1000; - long sampleWaitTime = currentSample - sampleWeShouldBeAt; + long samplesRead = 0; + bool readOk=mediaPlayerState->curDecoder()->audioReadSamples( (short*)audioBuffer, channels, 1024, samplesRead, stream ); + long sampleWeShouldBeAt = long( playtime.elapsed() ) * freq / 1000; + long sampleWaitTime = currentSample - sampleWeShouldBeAt; // this causes drop outs not sure why its even here - if ( ( sampleWaitTime > 2000 ) && ( sampleWaitTime < 20000 ) ) { - usleep( (long)((double)sampleWaitTime * 1000000.0 / freq) ); - } - else if ( sampleWaitTime <= -5000 ) { - qDebug("need to catch up by: %li (%i,%li)", -sampleWaitTime, currentSample, sampleWeShouldBeAt ); -// //mediaPlayerState->curDecoder()->audioSetSample( sampleWeShouldBeAt, stream ); - currentSample = sampleWeShouldBeAt; - } +// if ( ( sampleWaitTime > 2000 ) && ( sampleWaitTime < 20000 ) ) { +// usleep( (long)((double)sampleWaitTime * 1000000.0 / freq) ); +// } +// else if ( sampleWaitTime <= -5000 ) { +// qDebug("need to catch up by: %li (%i,%li)", -sampleWaitTime, currentSample, sampleWeShouldBeAt ); +// // //mediaPlayerState->curDecoder()->audioSetSample( sampleWeShouldBeAt, stream ); +// currentSample = sampleWeShouldBeAt; +// } - audioDevice->write( audioBuffer, samplesRead * 2 * channels ); + audioDevice->write( audioBuffer, samplesRead * 2 * channels ); - if( mediaPlayerState->isStreaming == FALSE) - audioSampleCounter = currentSample + samplesRead - 1; + if( mediaPlayerState->isStreaming == FALSE) + audioSampleCounter = currentSample + samplesRead - 1; - moreAudio = readOk && (audioSampleCounter <= total_audio_samples); + moreAudio = readOk && (audioSampleCounter <= total_audio_samples); - } else { + } else { - moreAudio = FALSE; + moreAudio = FALSE; - } + } @@ -272,3 +271,3 @@ void LoopControl::killTimers() { if ( hasVideoChannel ) - killTimer( videoId ); + killTimer( videoId ); killTimer( sliderId ); @@ -288,5 +287,5 @@ void LoopControl::startTimers() { if ( hasVideoChannel ) { - moreVideo = TRUE; - int mSecsBetweenFrames = (int)(100 / framerate); // 10% of the real value - videoId = startTimer( mSecsBetweenFrames ); + moreVideo = TRUE; + int mSecsBetweenFrames = (int)(100 / framerate); // 10% of the real value + videoId = startTimer( mSecsBetweenFrames ); } @@ -294,4 +293,4 @@ void LoopControl::startTimers() { if ( hasAudioChannel ) { - moreAudio = TRUE; - threadOkToGo = TRUE; + moreAudio = TRUE; + threadOkToGo = TRUE; } @@ -307,12 +306,12 @@ void LoopControl::setPaused( bool pause ) { if ( !mediaPlayerState->curDecoder() || !mediaPlayerState->curDecoder()->isOpen() ) - return; + return; if ( pause ) { - killTimers(); + killTimers(); } else { - // Force an update of the position - mediaPlayerState->setPosition( mediaPlayerState->position() + 1 ); - mediaPlayerState->setPosition( mediaPlayerState->position() - 1 ); - // Just like we never stopped - startTimers(); + // Force an update of the position + mediaPlayerState->setPosition( mediaPlayerState->position() + 1 ); + mediaPlayerState->setPosition( mediaPlayerState->position() - 1 ); + // Just like we never stopped + startTimers(); } @@ -325,5 +324,5 @@ void LoopControl::stop( bool willPlayAgainShortly ) { if ( !willPlayAgainShortly && disabledSuspendScreenSaver ) { - disabledSuspendScreenSaver = FALSE; - // Re-enable the suspend mode - QCopEnvelope("QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Enable; + disabledSuspendScreenSaver = FALSE; + // Re-enable the suspend mode + QCopEnvelope("QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Enable; } @@ -333,18 +332,20 @@ void LoopControl::stop( bool willPlayAgainShortly ) { - killTimers(); + killTimers(); - audioMutex->lock(); + audioMutex->lock(); - mediaPlayerState->curDecoder()->close(); + mediaPlayerState->curDecoder()->close(); - if ( audioDevice ) { - delete audioDevice; - delete audioBuffer; - audioDevice = 0; - audioBuffer = 0; - } - - audioMutex->unlock(); + if ( audioDevice ) { + delete audioDevice; + delete audioBuffer; + audioDevice = 0; + audioBuffer = 0; + } + audioMutex->unlock(); } + audioSampleCounter=0; + current_frame=0; + total_audio_samples=0; } @@ -354,3 +355,2 @@ bool LoopControl::init( const QString& filename ) { stop(); - audioMutex->lock(); @@ -363,3 +363,3 @@ bool LoopControl::init( const QString& filename ) { - // ### Hack to use libmpeg3plugin to get the number of audio samples if we are using the libmad plugin + // ### Hack to use libmpeg3plugin to get the number of audio samples if we are using the libmad plugin if ( mediaPlayerState->curDecoder()->pluginName() == QString("LibMadPlugin") ) { @@ -372,4 +372,4 @@ bool LoopControl::init( const QString& filename ) { if ( !mediaPlayerState->curDecoder()|| !mediaPlayerState->curDecoder()->open( filename ) ) { - audioMutex->unlock(); - return FALSE; + audioMutex->unlock(); + return FALSE; } @@ -380,39 +380,39 @@ bool LoopControl::init( const QString& filename ) { if ( hasAudioChannel ) { - int astream = 0; + int astream = 0; - if ( mediaPlayerState->curDecoder()->pluginName() == QString("LibMpeg3Plugin") ) - channels = 2; //dont akx me why, but it needs this hack - else - channels = mediaPlayerState->curDecoder()->audioChannels( astream ); + if ( mediaPlayerState->curDecoder()->pluginName() == QString("LibMpeg3Plugin") ) + channels = 2; //dont akx me why, but it needs this hack + else + channels = mediaPlayerState->curDecoder()->audioChannels( astream ); - qDebug( "LC- channels = %d", channels ); + qDebug( "LC- channels = %d", channels ); - if ( !total_audio_samples ) - total_audio_samples = mediaPlayerState->curDecoder()->audioSamples( astream ); + if ( !total_audio_samples ) + total_audio_samples = mediaPlayerState->curDecoder()->audioSamples( astream ); - total_audio_samples += 1000; + total_audio_samples += 1000; - mediaPlayerState->setLength( total_audio_samples ); + mediaPlayerState->setLength( total_audio_samples ); - freq = mediaPlayerState->curDecoder()->audioFrequency( astream ); - qDebug( "LC- frequency = %d", freq ); - - audioSampleCounter = 0; - int bits_per_sample; - if ( mediaPlayerState->curDecoder()->pluginName() == QString("LibWavPlugin") ) { - bits_per_sample =(int) mediaPlayerState->curDecoder()->getTime(); - qDebug("using stupid hack"); - } else { - bits_per_sample=0; - } - - audioDevice = new AudioDevice( freq, channels, bits_per_sample); - audioBuffer = new char[ audioDevice->bufferSize() ]; - channels = audioDevice->channels(); - - //### must check which frequency is actually used. - static const int size = 1; - short int buf[size]; - long samplesRead = 0; - mediaPlayerState->curDecoder()->audioReadSamples( buf, channels, size, samplesRead, stream ); + freq = mediaPlayerState->curDecoder()->audioFrequency( astream ); + qDebug( "LC- frequency = %d", freq ); + + audioSampleCounter = 0; + int bits_per_sample; + if ( mediaPlayerState->curDecoder()->pluginName() == QString("LibWavPlugin") ) { + bits_per_sample =(int) mediaPlayerState->curDecoder()->getTime(); + qDebug("using stupid hack"); + } else { + bits_per_sample=0; + } + + audioDevice = new AudioDevice( freq, channels, bits_per_sample); + audioBuffer = new char[ audioDevice->bufferSize() ]; + channels = audioDevice->channels(); + + //### must check which frequency is actually used. + static const int size = 1; + short int buf[size]; + long samplesRead = 0; + mediaPlayerState->curDecoder()->audioReadSamples( buf, channels, size, samplesRead, stream ); } @@ -420,17 +420,17 @@ bool LoopControl::init( const QString& filename ) { if ( hasVideoChannel ) { - total_video_frames = mediaPlayerState->curDecoder()->videoFrames( stream ); + total_video_frames = mediaPlayerState->curDecoder()->videoFrames( stream ); - mediaPlayerState->setLength( total_video_frames ); + mediaPlayerState->setLength( total_video_frames ); - framerate = mediaPlayerState->curDecoder()->videoFrameRate( stream ); - DecodeLoopDebug(( "Frame rate %g total %ld", framerate, total_video_frames )); + framerate = mediaPlayerState->curDecoder()->videoFrameRate( stream ); + DecodeLoopDebug(( "Frame rate %g total %ld", framerate, total_video_frames )); - if ( framerate <= 1.0 ) { - DecodeLoopDebug(( "Crazy frame rate, resetting to sensible" )); - framerate = 25; - } + if ( framerate <= 1.0 ) { + DecodeLoopDebug(( "Crazy frame rate, resetting to sensible" )); + framerate = 25; + } - if ( total_video_frames == 1 ) { - DecodeLoopDebug(( "Cannot seek to frame" )); - } + if ( total_video_frames == 1 ) { + DecodeLoopDebug(( "Cannot seek to frame" )); + } @@ -452,9 +452,11 @@ void LoopControl::play() { qDebug("LC- play"); + mediaPlayerState->setPosition( 0); //uglyhack + #if defined(Q_WS_QWS) && !defined(QT_NO_COP) if ( !disabledSuspendScreenSaver || previousSuspendMode != hasVideoChannel ) { - disabledSuspendScreenSaver = TRUE; - previousSuspendMode = hasVideoChannel; - // Stop the screen from blanking and power saving state - QCopEnvelope("QPE/System", "setScreenSaverMode(int)" ) - << ( hasVideoChannel ? QPEApplication::Disable : QPEApplication::DisableSuspend ); + disabledSuspendScreenSaver = TRUE; + previousSuspendMode = hasVideoChannel; + // Stop the screen from blanking and power saving state + QCopEnvelope("QPE/System", "setScreenSaverMode(int)" ) + << ( hasVideoChannel ? QPEApplication::Disable : QPEApplication::DisableSuspend ); } @@ -469,10 +471,10 @@ void LoopControl::setMute( bool on ) { if ( on != isMuted ) { - isMuted = on; - if ( !on ) { - // Force an update of the position - mediaPlayerState->setPosition( mediaPlayerState->position() + 1 ); - mediaPlayerState->setPosition( mediaPlayerState->position() - 1 ); - // Resume playing audio - moreAudio = TRUE; - } + isMuted = on; + if ( !on ) { + // Force an update of the position + mediaPlayerState->setPosition( mediaPlayerState->position() + 1 ); + mediaPlayerState->setPosition( mediaPlayerState->position() - 1 ); + // Resume playing audio + moreAudio = TRUE; + } } diff --git a/core/multimedia/opieplayer/mediaplayer.cpp b/core/multimedia/opieplayer/mediaplayer.cpp index b9e438b..64fdc01 100644 --- a/core/multimedia/opieplayer/mediaplayer.cpp +++ b/core/multimedia/opieplayer/mediaplayer.cpp @@ -64,2 +64,3 @@ MediaPlayer::MediaPlayer( QObject *parent, const char *name ) MediaPlayer::~MediaPlayer() { + } diff --git a/core/multimedia/opieplayer/mediaplayerstate.cpp b/core/multimedia/opieplayer/mediaplayerstate.cpp index 3ac9ac4..cf166d6 100644 --- a/core/multimedia/opieplayer/mediaplayerstate.cpp +++ b/core/multimedia/opieplayer/mediaplayerstate.cpp @@ -1,20 +1,20 @@ /********************************************************************** -** Copyright (C) 2000 Trolltech AS. All rights reserved. -** -** This file is part of Qtopia Environment. -** -** This file may be distributed and/or modified under the terms of the -** GNU General Public License version 2 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. -** -** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -** -** See http://www.trolltech.com/gpl/ for GPL licensing information. -** -** Contact info@trolltech.com if any conditions of this licensing are -** not clear to you. -** -**********************************************************************/ + ** Copyright (C) 2000 Trolltech AS. All rights reserved. + ** + ** This file is part of Qtopia Environment. + ** + ** This file may be distributed and/or modified under the terms of the + ** GNU General Public License version 2 as published by the Free Software + ** Foundation and appearing in the file LICENSE.GPL included in the + ** packaging of this file. + ** + ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE + ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + ** + ** See http://www.trolltech.com/gpl/ for GPL licensing information. + ** + ** Contact info@trolltech.com if any conditions of this licensing are + ** not clear to you. + ** + **********************************************************************/ #include <qpe/qpeapplication.h> @@ -43,3 +43,3 @@ MediaPlayerState::MediaPlayerState( QObject *parent, const char *name ) - : QObject( parent, name ), decoder( NULL ), libmpeg3decoder( NULL ) { + : QObject( parent, name ), decoder( NULL ), libmpeg3decoder( NULL ) { Config cfg( "OpiePlayer" ); @@ -108,3 +108,3 @@ MediaPlayerDecoder *MediaPlayerState::newDecoder( const QString& file ) { else - isStreaming = FALSE; + isStreaming = FALSE; return decoder = tmpDecoder; @@ -133,5 +133,5 @@ void MediaPlayerState::loadPlugins() { for ( mit = pluginList.begin(); mit != pluginList.end(); ++mit ) { - (*mit).iface->release(); - (*mit).library->unload(); - delete (*mit).library; + (*mit).iface->release(); + (*mit).library->unload(); + delete (*mit).library; } @@ -144,7 +144,7 @@ void MediaPlayerState::loadPlugins() { for ( it = list.begin(); it != list.end(); ++it ) { - MediaPlayerPluginInterface *iface = 0; - QLibrary *lib = new QLibrary( path + "/" + *it ); + MediaPlayerPluginInterface *iface = 0; + QLibrary *lib = new QLibrary( path + "/" + *it ); // qDebug( "querying: %s", QString( path + "/" + *it ).latin1() ); - if ( lib->queryInterface( IID_MediaPlayerPlugin, (QUnknownInterface**)&iface ) == QS_OK ) { + if ( lib->queryInterface( IID_MediaPlayerPlugin, (QUnknownInterface**)&iface ) == QS_OK ) { @@ -152,16 +152,16 @@ void MediaPlayerState::loadPlugins() { - MediaPlayerPlugin plugin; - plugin.library = lib; - plugin.iface = iface; - plugin.decoder = plugin.iface->decoder(); - plugin.encoder = plugin.iface->encoder(); - pluginList.append( plugin ); + MediaPlayerPlugin plugin; + plugin.library = lib; + plugin.iface = iface; + plugin.decoder = plugin.iface->decoder(); + plugin.encoder = plugin.iface->encoder(); + pluginList.append( plugin ); - // ### hack to get true sample count - if ( plugin.decoder->pluginName() == QString("LibMpeg3Plugin") ) - libmpeg3decoder = plugin.decoder; + // ### hack to get true sample count + if ( plugin.decoder->pluginName() == QString("LibMpeg3Plugin") ) + libmpeg3decoder = plugin.decoder; - } else { - delete lib; - } + } else { + delete lib; + } } @@ -190,5 +190,5 @@ void MediaPlayerState::loadPlugins() { if ( pluginList.count() ) - MediaPlayerDebug(( "%i decoders found", pluginList.count() )); + MediaPlayerDebug(( "%i decoders found", pluginList.count() )); else - MediaPlayerDebug(( "No decoders found" )); + MediaPlayerDebug(( "No decoders found" )); } diff --git a/core/multimedia/opieplayer/playlistwidget.cpp b/core/multimedia/opieplayer/playlistwidget.cpp index 200ec16..35208e4 100644 --- a/core/multimedia/opieplayer/playlistwidget.cpp +++ b/core/multimedia/opieplayer/playlistwidget.cpp @@ -159,3 +159,2 @@ PlayListWidget::PlayListWidget( QWidget* parent, const char* name, WFlags fl ) tbDeletePlaylist->setFixedSize(20,20); - connect(tbDeletePlaylist,(SIGNAL(released())),SLOT( deletePlaylist())); @@ -192,6 +191,4 @@ PlayListWidget::PlayListWidget( QWidget* parent, const char* name, WFlags fl ) fullScreenButton = new QAction(tr("Full Screen"), Resource::loadPixmap("fullscreen"), QString::null, 0, this, 0); - connect( fullScreenButton, SIGNAL(activated()), mediaPlayerState, SLOT(toggleFullscreen()) ); fullScreenButton->addTo(pmView); scaleButton = new QAction(tr("Scale"), Resource::loadPixmap("opieplayer/scale"), QString::null, 0, this, 0); - connect( scaleButton, SIGNAL(activated()), mediaPlayerState, SLOT(toggleScaled()) ); scaleButton->addTo(pmView); @@ -226,4 +223,2 @@ PlayListWidget::PlayListWidget( QWidget* parent, const char* name, WFlags fl ) - connect( d->selectedFiles, SIGNAL( mouseButtonPressed( int, QListViewItem *, const QPoint&, int)), - this,SLOT( playlistViewPressed(int, QListViewItem *, const QPoint&, int)) ); @@ -253,7 +248,2 @@ PlayListWidget::PlayListWidget( QWidget* parent, const char* name, WFlags fl ) QPEApplication::setStylusOperation( audioView->viewport(),QPEApplication::RightOnHold); - connect( audioView, SIGNAL( mouseButtonPressed( int, QListViewItem *, const QPoint&, int)), - this,SLOT( viewPressed(int, QListViewItem *, const QPoint&, int)) ); - - connect( audioView, SIGNAL( returnPressed( QListViewItem *)), - this,SLOT( playIt( QListViewItem *)) ); @@ -279,7 +269,2 @@ PlayListWidget::PlayListWidget( QWidget* parent, const char* name, WFlags fl ) - connect( videoView, SIGNAL( mouseButtonPressed( int, QListViewItem *, const QPoint&, int)), - this,SLOT( viewPressed(int, QListViewItem *, const QPoint&, int)) ); - connect( videoView, SIGNAL( returnPressed( QListViewItem *)), - this,SLOT( playIt( QListViewItem *)) ); - tabWidget->insertTab( vTab,tr("Video")); @@ -294,3 +279,2 @@ PlayListWidget::PlayListWidget( QWidget* parent, const char* name, WFlags fl ) - connect( playLists, SIGNAL( fileSelected( const DocLnk &) ), this, SLOT( loadList( const DocLnk & ) ) ); // connect( playLists, SIGNAL( newSelected( const DocLnk &) ), this, SLOT( newFile( const DocLnk & ) ) ); @@ -307,6 +291,26 @@ PlayListWidget::PlayListWidget( QWidget* parent, const char* name, WFlags fl ) - connect( audioView, SIGNAL( doubleClicked( QListViewItem *) ), this, SLOT( addToSelection( QListViewItem *) ) ); + connect(tbDeletePlaylist,(SIGNAL(released())),SLOT( deletePlaylist())); + connect( fullScreenButton, SIGNAL(activated()), mediaPlayerState, SLOT(toggleFullscreen()) ); + connect( scaleButton, SIGNAL(activated()), mediaPlayerState, SLOT(toggleScaled()) ); + connect( d->selectedFiles, SIGNAL( mouseButtonPressed( int, QListViewItem *, const QPoint&, int)), + this,SLOT( playlistViewPressed(int, QListViewItem *, const QPoint&, int)) ); + + connect( audioView, SIGNAL( mouseButtonPressed( int, QListViewItem *, const QPoint&, int)), + this,SLOT( viewPressed(int, QListViewItem *, const QPoint&, int)) ); + + connect( audioView, SIGNAL( returnPressed( QListViewItem *)), + this,SLOT( playIt( QListViewItem *)) ); + connect( audioView, SIGNAL( doubleClicked( QListViewItem *) ), this, SLOT( addToSelection( QListViewItem *) ) ); + + connect( videoView, SIGNAL( mouseButtonPressed( int, QListViewItem *, const QPoint&, int)), + this,SLOT( viewPressed(int, QListViewItem *, const QPoint&, int)) ); + connect( videoView, SIGNAL( returnPressed( QListViewItem *)), + this,SLOT( playIt( QListViewItem *)) ); connect( videoView, SIGNAL( doubleClicked( QListViewItem *) ), this, SLOT( addToSelection( QListViewItem *) ) ); + connect( playLists, SIGNAL( fileSelected( const DocLnk &) ), this, SLOT( loadList( const DocLnk & ) ) ); + + connect( tabWidget, SIGNAL (currentChanged(QWidget*)),this,SLOT(tabChanged(QWidget*))); + connect( mediaPlayerState, SIGNAL( playingToggled( bool ) ), d->tbPlay, SLOT( setOn( bool ) ) ); @@ -754,3 +758,5 @@ void PlayListWidget::playIt( QListViewItem *it) { // d->setDocumentUsed = FALSE; - mediaPlayerState->setPlaying(FALSE); +// mediaPlayerState->curPosition =0; + qDebug("playIt"); + mediaPlayerState->setPlaying(FALSE); mediaPlayerState->setPlaying(TRUE); @@ -837,2 +843,3 @@ void PlayListWidget::btnPlay(bool b) { { + mediaPlayerState->setPlaying(b); |