From bc63661d962629735958e8c3749314388ec4f75b Mon Sep 17 00:00:00 2001 From: doitux Date: Tue, 29 May 2007 12:22:05 +0000 Subject: [PATCH] add sound-system SDL_mixer --- INSTALL | 1 + pokerth.pro | 2 +- src/gui/qt/mainwindow/mainwindowimpl.cpp | 58 ++++++++++++++++++++++- src/gui/qt/mainwindow/mainwindowimpl.h | 15 ++++++ src/gui/qt/resources.qrc | 1 + src/gui/qt/resources/data/beep.ogg | Bin 0 -> 7067 bytes 6 files changed, 75 insertions(+), 2 deletions(-) create mode 100644 src/gui/qt/resources/data/beep.ogg diff --git a/INSTALL b/INSTALL index d9f4de29..e8c1f2fc 100644 --- a/INSTALL +++ b/INSTALL @@ -7,6 +7,7 @@ Linux: - Qt version >= 4.2.3 --> http://trolltech.com/ - libcrypt (e.g. version 0.9.7) --> http://www.openssl.org/ - libboost_thread (e.g. version 1.33) --> http://www.boost.org/ +- libSDL_mixer, libSDL --> http://www.libsdl.org/ Windows: diff --git a/pokerth.pro b/pokerth.pro index 50e8510f..d68c7054 100755 --- a/pokerth.pro +++ b/pokerth.pro @@ -256,7 +256,7 @@ win32{ } unix{ - LIBS += -lboost_thread -lcrypto + LIBS += -lboost_thread -lcrypto -lSDL_mixer } macx{ diff --git a/src/gui/qt/mainwindow/mainwindowimpl.cpp b/src/gui/qt/mainwindow/mainwindowimpl.cpp index 9bf62ce2..5f80e034 100755 --- a/src/gui/qt/mainwindow/mainwindowimpl.cpp +++ b/src/gui/qt/mainwindow/mainwindowimpl.cpp @@ -49,10 +49,17 @@ #include +//SOUND TESTING +// #include "SDL.h" +// #include "SDL_mixer.h" +//SOUND TESTING + #define FORMATLEFT(X) "

(X)" #define FORMATRIGHT(X) "(X)

" + + using namespace std; mainWindowImpl::mainWindowImpl(ConfigFile *c, QMainWindow *parent) @@ -621,12 +628,34 @@ mainWindowImpl::mainWindowImpl(ConfigFile *c, QMainWindow *parent) // playerNameLabelArray[1]->setText(QString::fromUtf8(myConfig->readConfigString("Opponent1Name").c_str())); + + //SOUNDTESTING + audio_rate = 44100; + audio_format = AUDIO_S16; /* 16-bit stereo */ + audio_channels = 2; + audio_buffers = 4096; + music = NULL; + + SDL_Init(SDL_INIT_AUDIO); + + if(Mix_OpenAudio(audio_rate, audio_format, audio_channels, audio_buffers)) { + printf("Unable to open audio!\n"); + exit(1); + } + + Mix_QuerySpec(&audio_rate, &audio_format, &audio_channels); + //SOUNDTESTING + } mainWindowImpl::~mainWindowImpl() { delete myConfig; myConfig = 0; + + //SOUND TESTING + Mix_CloseAudio(); + SDL_Quit(); } void mainWindowImpl::callNewGameDialog() { @@ -2468,7 +2497,7 @@ void mainWindowImpl::keyPressEvent ( QKeyEvent * event ) { if (event->key() == Qt::Key_F10) { switchLeftToolBox(); } if (event->key() == Qt::Key_F11) { switchRightToolBox(); } // if (event->key() == Qt::Key_F) { switchFullscreen(); } //f - if (event->key() == Qt::Key_S) { myChat->checkInvisible(); } //f + if (event->key() == Qt::Key_S) { playSound(); } //s if (event->key() == 16777249) { pushButton_break->click(); ctrlPressed = TRUE; @@ -2561,3 +2590,30 @@ void mainWindowImpl::networkGameModification() { } +void mainWindowImpl::musicDone() { + Mix_HaltMusic(); + Mix_FreeMusic(music); + music = NULL; +} + +void mainWindowImpl::playSound() { + + cout << "play now" << endl; + /* Actually loads up the music */ + music = Mix_LoadMUS("beep.ogg"); + + /* This begins playing the music - the first argument is a + pointer to Mix_Music structure, and the second is how many + times you want it to loop (use -1 for infinite, and 0 to + have it just play once) */ + Mix_PlayMusic(music, 0); + + /* We want to know when our music has stopped playing so we + can free it up and set 'music' back to NULL. SDL_Mixer + provides us with a callback routine we can use to do + exactly that */ +// Mix_HookMusicFinished(mainWindowImpl::musicDone); + + } + + diff --git a/src/gui/qt/mainwindow/mainwindowimpl.h b/src/gui/qt/mainwindow/mainwindowimpl.h index 094076cd..65febae6 100755 --- a/src/gui/qt/mainwindow/mainwindowimpl.h +++ b/src/gui/qt/mainwindow/mainwindowimpl.h @@ -30,6 +30,9 @@ #include #include +#include "SDL/SDL.h" +#include "SDL/SDL_mixer.h" + class Log; class Chat; class ConfigFile; @@ -250,6 +253,11 @@ public slots: void localGameModification(); void networkGameModification(); + //SOUND TESTING + void playSound(); + void musicDone(); + + private: boost::shared_ptr myServerGuiInterface; @@ -379,6 +387,13 @@ private: // statistic testing int statisticArray[15]; + //sound testing + int audio_rate; + Uint16 audio_format; + int audio_channels; + int audio_buffers; + Mix_Music *music; + friend class GuiWrapper; }; diff --git a/src/gui/qt/resources.qrc b/src/gui/qt/resources.qrc index 77eea62d..ee731066 100755 --- a/src/gui/qt/resources.qrc +++ b/src/gui/qt/resources.qrc @@ -72,6 +72,7 @@ resources/data/preflopValues resources/data/flopValues + resources/data/beep.ogg resources/fonts/VeraBd.ttf diff --git a/src/gui/qt/resources/data/beep.ogg b/src/gui/qt/resources/data/beep.ogg new file mode 100644 index 0000000000000000000000000000000000000000..1c8d27419d56fe25dacc03114c14b5aea023832c GIT binary patch literal 7067 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 literal 0 HcmV?d00001