diff options
author | Qt Continuous Integration System <qt-info@nokia.com> | 2010-04-10 04:07:12 (GMT) |
---|---|---|
committer | Qt Continuous Integration System <qt-info@nokia.com> | 2010-04-10 04:07:12 (GMT) |
commit | f64ad3687c428644139690d565fe555ed2199aea (patch) | |
tree | 71254975baa06a8ebae38bd41c315fd16f050efb /src/3rdparty/phonon/ds9/backend.cpp | |
parent | 7690bab57ef7ae6d669c6df23e9de72fd8a85d62 (diff) | |
parent | f9d26f506b30dcdb1fc50c824f20455756d67cc4 (diff) | |
download | Qt-f64ad3687c428644139690d565fe555ed2199aea.zip Qt-f64ad3687c428644139690d565fe555ed2199aea.tar.gz Qt-f64ad3687c428644139690d565fe555ed2199aea.tar.bz2 |
Merge branch '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-2 into 4.7-integration
* '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-2: (27 commits)
Fix the doc for QFrame::frameStyle
Don't use texture-from-pixmap if the target isn't GL_TEXTURE_2D
Add runtime check for GLX >= 1.3 before using glXCreatePixmap
QDrawHelper: Reduce code duplications
Improve matching X11 VisualIDs to EGL configs
Remove obsolete function set_winapp_name()
Speedup fetchTransformedBilinear in the fast_matrix case
Allow y-interted pixmaps for brushes in GL2 paint engine
Build fix for mingw
Fix build with mingw (64 bit)
Make configure.exe compatible with mingw 64
Adjust indentation
e-Ink support cleanup
Tweak the display update IOCTL calls
Support 8-Track e-Ink devices
Get stride from LinuxFB instead of calculating it ourselves.
Use DIR_SEPARATOR when setting up variables for RCC and UIC in features.
Fixed bug in QPainterPath::intersected().
Fix compile error with QT_NO_ANIMATION
O(n^2) to O(n) optimization in QTreeWidget::selectedItems()
...
Diffstat (limited to 'src/3rdparty/phonon/ds9/backend.cpp')
-rw-r--r-- | src/3rdparty/phonon/ds9/backend.cpp | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/3rdparty/phonon/ds9/backend.cpp b/src/3rdparty/phonon/ds9/backend.cpp index 2c56af7..fbc4bdc 100644 --- a/src/3rdparty/phonon/ds9/backend.cpp +++ b/src/3rdparty/phonon/ds9/backend.cpp @@ -41,6 +41,8 @@ namespace Phonon { namespace DS9 { + QMutex *Backend::directShowMutex = 0; + bool Backend::AudioMoniker::operator==(const AudioMoniker &other) { return other->IsEqual(*this) == S_OK; @@ -50,6 +52,8 @@ namespace Phonon Backend::Backend(QObject *parent, const QVariantList &) : QObject(parent) { + directShowMutex = &m_directShowMutex; + ::CoInitialize(0); //registering meta types @@ -62,6 +66,8 @@ namespace Phonon m_audioOutputs.clear(); m_audioEffects.clear(); ::CoUninitialize(); + + directShowMutex = 0; } QObject *Backend::createObject(BackendInterface::Class c, QObject *parent, const QList<QVariant> &args) @@ -131,6 +137,7 @@ namespace Phonon QList<int> Backend::objectDescriptionIndexes(Phonon::ObjectDescriptionType type) const { + QMutexLocker locker(&m_directShowMutex); QList<int> ret; switch(type) @@ -157,7 +164,7 @@ namespace Phonon while (S_OK == enumMon->Next(1, mon.pparam(), 0)) { LPOLESTR str = 0; mon->GetDisplayName(0,0,&str); - const QString name = QString::fromUtf16((unsigned short*)str); + const QString name = QString::fromWCharArray(str); ComPointer<IMalloc> alloc; ::CoGetMalloc(1, alloc.pparam()); alloc->Free(str); @@ -204,6 +211,7 @@ namespace Phonon QHash<QByteArray, QVariant> Backend::objectDescriptionProperties(Phonon::ObjectDescriptionType type, int index) const { + QMutexLocker locker(&m_directShowMutex); QHash<QByteArray, QVariant> ret; switch (type) { @@ -216,7 +224,7 @@ namespace Phonon LPOLESTR str = 0; HRESULT hr = mon->GetDisplayName(0,0, &str); if (SUCCEEDED(hr)) { - QString name = QString::fromUtf16((unsigned short*)str); + QString name = QString::fromWCharArray(str); ComPointer<IMalloc> alloc; ::CoGetMalloc(1, alloc.pparam()); alloc->Free(str); @@ -231,7 +239,7 @@ namespace Phonon WCHAR name[80]; // 80 is clearly stated in the MSDN doc HRESULT hr = ::DMOGetName(m_audioEffects[index], name); if (SUCCEEDED(hr)) { - ret["name"] = QString::fromUtf16((unsigned short*)name); + ret["name"] = QString::fromWCharArray(name); } } break; |