summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/phonon/ds9/backend.cpp
diff options
context:
space:
mode:
authorQt Continuous Integration System <qt-info@nokia.com>2010-04-10 04:07:12 (GMT)
committerQt Continuous Integration System <qt-info@nokia.com>2010-04-10 04:07:12 (GMT)
commitf64ad3687c428644139690d565fe555ed2199aea (patch)
tree71254975baa06a8ebae38bd41c315fd16f050efb /src/3rdparty/phonon/ds9/backend.cpp
parent7690bab57ef7ae6d669c6df23e9de72fd8a85d62 (diff)
parentf9d26f506b30dcdb1fc50c824f20455756d67cc4 (diff)
downloadQt-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.cpp14
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;