diff options
author | Ken Moore <ken@pcbsd.org> | 2015-04-16 22:49:58 -0400 |
---|---|---|
committer | Ken Moore <ken@pcbsd.org> | 2015-04-16 22:49:58 -0400 |
commit | aeba6cb5554186478d15cbfc7a9ac580d3c52c72 (patch) | |
tree | 9baa36ce1136bba09ca0709a843060d2db686ec6 /lumina-desktop | |
parent | Clean up a *lot* of the general XCB warnings that sometimes occur, and also t... (diff) | |
download | lumina-aeba6cb5554186478d15cbfc7a9ac580d3c52c72.tar.gz lumina-aeba6cb5554186478d15cbfc7a9ac580d3c52c72.tar.bz2 lumina-aeba6cb5554186478d15cbfc7a9ac580d3c52c72.zip |
Fix the session chimes (and possible stability issue) by removing the special audio thread and using the QMediaPlayer within the main thread (no stuttering/delays in my initial tests so far).
Add a PC-BSD specific routine for setting brightness so that hardware brightness controls are attempted (through pc-sysconfig) before the software brightness is modified (using xbrightness)
Diffstat (limited to 'lumina-desktop')
-rw-r--r-- | lumina-desktop/LSession.cpp | 26 | ||||
-rw-r--r-- | lumina-desktop/LSession.h | 2 |
2 files changed, 15 insertions, 13 deletions
diff --git a/lumina-desktop/LSession.cpp b/lumina-desktop/LSession.cpp index 8f6da9ff..e076210f 100644 --- a/lumina-desktop/LSession.cpp +++ b/lumina-desktop/LSession.cpp @@ -24,7 +24,7 @@ #include <X11/extensions/Xdamage.h> #ifndef DEBUG -#define DEBUG 0 +#define DEBUG 1 #endif XCBEventFilter *evFilter = 0; @@ -54,8 +54,7 @@ LSession::LSession(int &argc, char ** argv) : QApplication(argc, argv){ settingsmenu = 0; currTranslator=0; mediaObj=0; - //audioOut=0; - audioThread=0; + //audioThread=0; sessionsettings=0; //Setup the event filter for Qt5 evFilter = new XCBEventFilter(this); @@ -72,7 +71,6 @@ LSession::~LSession(){ delete appmenu; delete currTranslator; if(mediaObj!=0){delete mediaObj;} - //if(audioOut!=0){delete audioOut; } } void LSession::setupSession(){ @@ -176,13 +174,17 @@ void LSession::CleanupSession(){ if(playaudio){ //wait a max of 3 seconds for audio to finish bool waitmore = true; - for(int i=0; i<6 && waitmore; i++){ - waitmore = !audioThread->wait(500); + for(int i=0; i<60 && waitmore; i++){ + usleep(50000); //50ms = 50000 us + waitmore = (mediaObj->state()==QMediaPlayer::PlayingState); + //waitmore = !audioThread->wait(500); LSession::processEvents(); } + if(waitmore){ mediaObj->stop(); } //timed out }else{ - for(int i=0; i<20; i++){ LSession::processEvents(); usleep(25); } //1/2 second pause + for(int i=0; i<20; i++){ LSession::processEvents(); usleep(25000); } //1/2 second pause } + //if(audioThread!=0){ audioThread->exit(0); } } int LSession::VersionStringToNumber(QString version){ @@ -469,19 +471,19 @@ void LSession::playAudioFile(QString filepath){ //Setup the audio output systems for the desktop bool init = false; if(DEBUG){ qDebug() << "Play Audio File"; } - if(audioThread==0){ qDebug() << " - Initialize audio systems"; audioThread = new QThread(); init = true; } + //if(audioThread==0){ qDebug() << " - Initialize audio systems"; audioThread = new QThread(); init = true; } if(mediaObj==0){ qDebug() << " - Initialize media player"; mediaObj = new QMediaPlayer(); init = true;} - if(mediaObj && init){ //in case it errors for some reason + /*if(mediaObj && init){ //in case it errors for some reason qDebug() << " -- Move audio objects to separate thread"; mediaObj->moveToThread(audioThread); audioThread->start(); - } + }*/ if(mediaObj !=0 ){ if(DEBUG){ qDebug() << " - starting playback:" << filepath; } - mediaObj->setMedia(QUrl::fromLocalFile(filepath)); mediaObj->setVolume(100); + mediaObj->setMedia(QUrl::fromLocalFile(filepath)); mediaObj->play(); - if(!audioThread->isRunning()){ audioThread->start(); } + //if(!audioThread->isRunning()){ audioThread->start(); } LSession::processEvents(); } if(DEBUG){ qDebug() << " - Done with Audio File"; } diff --git a/lumina-desktop/LSession.h b/lumina-desktop/LSession.h index 4c9ea15e..5baf72c4 100644 --- a/lumina-desktop/LSession.h +++ b/lumina-desktop/LSession.h @@ -97,7 +97,7 @@ private: SettingsMenu *settingsmenu; QTranslator *currTranslator; QMediaPlayer *mediaObj; - QThread *audioThread; + //QThread *audioThread; QSettings *sessionsettings; bool cleansession; |