diff options
author | Liang Qi <liang.qi@theqtcompany.com> | 2016-01-26 14:25:10 +0100 |
---|---|---|
committer | Liang Qi <liang.qi@theqtcompany.com> | 2016-01-26 14:25:10 +0100 |
commit | 7610f6e9ba8b92df6d18b94fcec982064dffacbd (patch) | |
tree | 65653559c62cc451258543b87ff971371e8d8e05 /src/plugins/winrt | |
parent | ac6f9d27b1610356303714c3f8d2f2ab2ca5883a (diff) | |
parent | 365e05bad8c4a42a449eeef257a16c6f8faca318 (diff) | |
download | qtmultimedia-7610f6e9ba8b92df6d18b94fcec982064dffacbd.tar.gz |
Merge remote-tracking branch 'origin/5.6' into dev
Change-Id: I2e4e9cca01d63ed0d1e7f71c7a58322390696036
Diffstat (limited to 'src/plugins/winrt')
-rw-r--r-- | src/plugins/winrt/qwinrtabstractvideorenderercontrol.cpp | 8 | ||||
-rw-r--r-- | src/plugins/winrt/qwinrtmediaplayercontrol.cpp | 9 |
2 files changed, 15 insertions, 2 deletions
diff --git a/src/plugins/winrt/qwinrtabstractvideorenderercontrol.cpp b/src/plugins/winrt/qwinrtabstractvideorenderercontrol.cpp index cf62843f7..7dd2e6557 100644 --- a/src/plugins/winrt/qwinrtabstractvideorenderercontrol.cpp +++ b/src/plugins/winrt/qwinrtabstractvideorenderercontrol.cpp @@ -86,6 +86,14 @@ struct QWinRTVideoRendererControlGlobal hr = D3D11CreateDevice(NULL, D3D_DRIVER_TYPE_HARDWARE, NULL, flags, featureLevels, ARRAYSIZE(featureLevels), D3D11_SDK_VERSION, &device, &featureLevel, &context); +#ifdef _DEBUG + if (FAILED(hr)) { + qErrnoWarning(hr, "Failed to create D3D device with device debug flag"); + hr = D3D11CreateDevice(NULL, D3D_DRIVER_TYPE_HARDWARE, NULL, D3D11_CREATE_DEVICE_VIDEO_SUPPORT, + featureLevels, ARRAYSIZE(featureLevels), D3D11_SDK_VERSION, + &device, &featureLevel, &context); + } +#endif if (FAILED(hr)) qErrnoWarning(hr, "Failed to create D3D device"); diff --git a/src/plugins/winrt/qwinrtmediaplayercontrol.cpp b/src/plugins/winrt/qwinrtmediaplayercontrol.cpp index 7bdb586c3..a07a6b622 100644 --- a/src/plugins/winrt/qwinrtmediaplayercontrol.cpp +++ b/src/plugins/winrt/qwinrtmediaplayercontrol.cpp @@ -388,8 +388,13 @@ public: HRESULT __stdcall SetCurrentPosition(QWORD position) { qint64 pos(position); - if (pos >= d->stream->size()) - return E_INVALIDARG; + if (pos >= d->stream->size()) { + // MSDN states we should return E_INVALIDARG, but that immediately + // stops playback and does not play remaining buffers in the queue. + // For some formats this can cause losing up to 5 seconds of the + // end of the stream. + return S_FALSE; + } const bool ok = d->stream->seek(pos); return ok ? S_OK : S_FALSE; |