Hello community,

here is the log from the commit of package QMPlay2 for openSUSE:Factory checked 
in at 2016-09-23 11:41:04
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/QMPlay2 (Old)
 and      /work/SRC/openSUSE:Factory/.QMPlay2.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "QMPlay2"

Changes:
--------
--- /work/SRC/openSUSE:Factory/QMPlay2/QMPlay2.changes  2016-09-05 
21:24:59.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.QMPlay2.new/QMPlay2.changes     2016-09-23 
11:41:06.000000000 +0200
@@ -1,0 +2,8 @@
+Thu Sep 22 17:40:03 UTC 2016 - dap.darkn...@gmail.com
+
+- Update to 16.09.21:
+  * Updated icon for YouTube quality button,
+  * Fixed screen saver blocking behavior,
+  * OpenGL2 bugfix.
+
+-------------------------------------------------------------------

Old:
----
  QMPlay2-src-16.09.04.tar.xz

New:
----
  QMPlay2-src-16.09.21.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ QMPlay2.spec ++++++
--- /var/tmp/diff_new_pack.z6qh2S/_old  2016-09-23 11:41:07.000000000 +0200
+++ /var/tmp/diff_new_pack.z6qh2S/_new  2016-09-23 11:41:07.000000000 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           QMPlay2
-Version:        16.09.04
+Version:        16.09.21
 Release:        0
 Summary:        A Qt based media player, streamer and downloader
 License:        LGPL-3.0+

++++++ QMPlay2-src-16.09.04.tar.xz -> QMPlay2-src-16.09.21.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/QMPlay2-src-16.09.04/ChangeLog 
new/QMPlay2-src-16.09.21/ChangeLog
--- old/QMPlay2-src-16.09.04/ChangeLog  2016-09-04 16:05:05.000000000 +0200
+++ new/QMPlay2-src-16.09.21/ChangeLog  2016-09-21 19:54:48.000000000 +0200
@@ -1,3 +1,8 @@
+Changes in QMPlay2 build 16.09.21:
+       - updated icon for YouTube quality button,
+       - fix screen saver blocking behavior,
+       - OpenGL2 bugfix,
+
 Changes in QMPlay2 build 16.09.04:
        - don't load subtitles which needs decoder without the decoder,
        - add checkbox to disable PBO in OpenGL2 module settings,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/QMPlay2-src-16.09.04/README.md 
new/QMPlay2-src-16.09.21/README.md
--- old/QMPlay2-src-16.09.04/README.md  2016-09-04 11:51:56.000000000 +0200
+++ new/QMPlay2-src-16.09.21/README.md  2016-09-21 20:36:07.000000000 +0200
@@ -27,10 +27,14 @@
 
 - [Download the newest Windows 
installer](https://github.com/zaps166/QMPlay2/releases).
 
-####Easy installation on Ubuntu
+####Easy installation on Ubuntu / Mint
 
 - [Download the newest Ubuntu DEB 
package](https://github.com/zaps166/QMPlay2/releases).
 
+####Easy installation on Debian / Ubuntu / Mint (from unofficial repository)
+
+- [Follow installation instructions on 
OBS](https://software.opensuse.org/download.html?project=home%3Astevepassert&package=qmplay2).
+
 ####Easy installation on Arch Linux / Manjaro Linux
 
 - Arch Linux only: Install AUR client (e.g. yaourt),
@@ -66,27 +70,13 @@
 
 Some YouTube videos don't work without external "youtube-dl" software, so 
QMPlay2 will ask you for downloading it if "youtube-dl" doesn't exist.
 
-You can also install it manually:
-
 ####Windows
 
-- [Watch the 
video](https://raw.githubusercontent.com/zaps166/GitHubCommonContents/master/Videos/QMPlay2_youtube-dl.mp4).
-- If the video doesn't play inside the web browser - copy the address, paste 
it to QMPlay2 (Ctrl+V) and play it!
-- Currently (as of 30.06.2016) "youtube-dl.exe" needs Visual Studio 2010 
Redistributable Package.
-- Make sure that antivirus or firewall doesn't block it (and doesn't block 
executing external application)!
-
-####Arch Linux / Manjaro Linux
+- Make sure that antivirus or firewall doesn't block "youtube-dl" and doesn't 
block executing external applications!
 
-- Install "youtube-dl" from repositories: `sudo pacman -S youtube-dl`.
+####Linux
 
-Even if Arch Linux repositories provides fresh packages, it is better to don't 
use "youtube-dl" from them.
-
-####Other Linux distributions or other operating system
-
-- Don't use "youtube-dl" from repositories - usually it contains too old 
package which no longer works. The exception is Arch Linux.
-- Download "youtube-dl": http://rg3.github.io/youtube-dl/download.html
-- Set the path for the script (you must have Python installed) in QMPlay2 
YouTube settings (you can watch the video from Windows installation).
-- QMPlay2 can automatically updates the "youtube-dl" if it is not installed 
from repositories.
+- Don't use "youtube-dl" from repositories - usually it contains too old 
package which no longer works.
 
 ##Spherical view
 
@@ -202,8 +192,6 @@
        - for Qt5 build (recommend for Qt5 >= 5.6.1): `sudo pacman -S qt5-base 
qt5-tools`,
        - for Qt4 build: `sudo pacman -S qt4`.
 
-You can also install youtube-dl: `sudo pacman -S youtube-dl`
-
 #####OpenSUSE dependencies (for Qt4 build)
 
 - Add Packman repository for FFmpeg with all codecs (don't mix FFmpeg from 
different repositories!):
Files old/QMPlay2-src-16.09.04/src/gui/Icons/video-display.png and 
new/QMPlay2-src-16.09.21/src/gui/Icons/video-display.png differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/QMPlay2-src-16.09.04/src/gui/Main.cpp 
new/QMPlay2-src-16.09.21/src/gui/Main.cpp
--- old/QMPlay2-src-16.09.04/src/gui/Main.cpp   2016-09-05 01:01:06.000000000 
+0200
+++ new/QMPlay2-src-16.09.21/src/gui/Main.cpp   2016-09-21 19:20:28.000000000 
+0200
@@ -18,6 +18,7 @@
 
 #include <Main.hpp>
 
+#include <ScreenSaver.hpp>
 #include <VideoFrame.hpp>
 #include <MainWidget.hpp>
 #include <PlayClass.hpp>
@@ -45,7 +46,8 @@
 
 #include <time.h>
 
-static bool useGui = true;
+static ScreenSaver *g_screenSaver = NULL;
+static bool g_useGui = true;
 
 QMPlay2GUIClass &QMPlay2GUIClass::instance()
 {
@@ -163,13 +165,14 @@
 
 QMPlay2GUIClass::QMPlay2GUIClass() :
        groupIcon(NULL), mediaIcon(NULL), folderIcon(NULL),
-       mainW(NULL)
+       mainW(NULL),
+       screenSaver(NULL)
 {
-       qmp2Pixmap = useGui ? new QPixmap(":/QMPlay2") : NULL;
+       qmp2Pixmap = g_useGui ? new QPixmap(":/QMPlay2") : NULL;
 }
 QMPlay2GUIClass::~QMPlay2GUIClass()
 {
-       if (useGui)
+       if (g_useGui)
        {
                delete qmp2Pixmap;
                deleteIcons();
@@ -286,19 +289,26 @@
        static bool qAppOK;
        static bool canDeleteApp = true;
 #endif
+
 #include <signal.h>
-static void signal_handler(int s)
+
+static inline void forceKill()
 {
 #ifdef Q_OS_WIN
        const int SC = SIGBREAK;
 #else
        const int SC = SIGKILL;
 #endif
+       delete g_screenSaver;
+       raise(SC);
+}
+static void signal_handler(int s)
+{
        switch (s)
        {
                case SIGINT:
                        if (!qApp)
-                               raise(SC);
+                               forceKill();
                        else
                        {
                                QWidget *modalW = 
QApplication::activeModalWidget();
@@ -308,32 +318,32 @@
                                        QMPlay2GUI.mainW = NULL;
                                }
                                else
-                                       raise(SC);
+                                       forceKill();
                        }
                        break;
                case SIGABRT:
 #ifdef QT5_NOT_WIN
-                       if (!qAppOK && useGui)
+                       if (!qAppOK && g_useGui)
                        {
-                               canDeleteApp = useGui = false;
+                               canDeleteApp = g_useGui = false;
                                longjmp(env, 1);
                        }
 #endif
                        QMPlay2Core.log("QMPlay2 has been aborted (SIGABRT)", 
ErrorLog | AddTimeToLog | (qApp ? SaveLog : DontShowInGUI));
 #ifndef Q_OS_WIN
-                       raise(SC);
+                       forceKill();
 #endif
                        break;
                case SIGFPE:
                        QMPlay2Core.log("QMPlay2 crashes (SIGFPE)", ErrorLog | 
AddTimeToLog | (qApp ? SaveLog : DontShowInGUI));
 #ifndef Q_OS_WIN
-                       raise(SC);
+                       forceKill();
 #endif
                        break;
                case SIGSEGV:
                        QMPlay2Core.log("QMPlay2 crashes (SIGSEGV)", ErrorLog | 
AddTimeToLog | (qApp ? SaveLog : DontShowInGUI));
 #ifndef Q_OS_WIN
-                       raise(SC);
+                       forceKill();
 #endif
                        break;
        }
@@ -368,21 +378,27 @@
 }
 #endif
 
+static void unblockScreenSaver()
+{
+       delete g_screenSaver;
+}
+
 int main(int argc, char *argv[])
 {
        signal(SIGINT, signal_handler);
        signal(SIGABRT, signal_handler);
        signal(SIGFPE, signal_handler);
        signal(SIGSEGV, signal_handler);
+       atexit(unblockScreenSaver);
 
 #ifdef Q_WS_X11
-       useGui = getenv("DISPLAY");
+       g_useGui = getenv("DISPLAY");
 #endif
 #ifdef QT5_NOT_WIN
        if (!setjmp(env))
 #endif
 #if QT_VERSION < 0x050000
-               new QApplication(argc, argv, useGui);
+               new QApplication(argc, argv, g_useGui);
 #else
                new QApplication(argc, argv);
 #endif
@@ -407,7 +423,7 @@
                if (socket.open(IPCSocket::WriteOnly))
                {
                        if (writeToSocket(socket))
-                               useGui = false;
+                               g_useGui = false;
                        socket.close();
                }
 #ifndef Q_OS_WIN
@@ -419,7 +435,7 @@
                }
 #endif
 
-               if (!useGui)
+               if (!g_useGui)
                {
 #ifdef QT5_NOT_WIN
                        if (canDeleteApp)
@@ -472,8 +488,11 @@
 
        QDir::setCurrent(QCoreApplication::applicationDirPath()); //Is it 
really needed?
 
-       if (useGui)
+       if (g_useGui)
+       {
+               QMPlay2GUI.screenSaver = g_screenSaver = new ScreenSaver;
                QApplication::setQuitOnLastWindowClosed(false);
+       }
 
 #ifdef Q_OS_WIN
        HHOOK keyboardHook = SetWindowsHookEx(WH_KEYBOARD_LL, MMKeysHookProc, 
GetModuleHandle(NULL), 0);
@@ -593,6 +612,9 @@
        UnhookWindowsHookEx(keyboardHook);
 #endif
 
+       delete g_screenSaver;
+       g_screenSaver = NULL;
+
 #ifdef QT5_NOT_WIN
        if (canDeleteApp)
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/QMPlay2-src-16.09.04/src/gui/Main.hpp 
new/QMPlay2-src-16.09.21/src/gui/Main.hpp
--- old/QMPlay2-src-16.09.04/src/gui/Main.hpp   2016-09-02 01:58:21.000000000 
+0200
+++ new/QMPlay2-src-16.09.21/src/gui/Main.hpp   2016-09-21 19:03:43.000000000 
+0200
@@ -26,6 +26,7 @@
 
 class VideoAdjustment;
 class ShortcutHandler;
+class ScreenSaver;
 class IPCServer;
 class VideoDock;
 class MenuBar;
@@ -67,6 +68,7 @@
        MenuBar *menuBar;
        QWidget *mainW;
        IPCServer *pipe;
+       ScreenSaver *screenSaver;
        VideoAdjustment *videoAdjustment;
        ShortcutHandler *shortcutHandler;
        bool restartApp, removeSettings;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/QMPlay2-src-16.09.04/src/gui/MainWidget.cpp 
new/QMPlay2-src-16.09.21/src/gui/MainWidget.cpp
--- old/QMPlay2-src-16.09.04/src/gui/MainWidget.cpp     2016-09-02 
02:17:33.000000000 +0200
+++ new/QMPlay2-src-16.09.21/src/gui/MainWidget.cpp     2016-09-21 
19:04:00.000000000 +0200
@@ -48,6 +48,7 @@
 #include <VideoAdjustment.hpp>
 #include <ShortcutHandler.hpp>
 #include <VolWidget.hpp>
+#include <ScreenSaver.hpp>
 
 using Functions::timeToStr;
 
@@ -333,15 +334,6 @@
 
        QMPlay2GUI.menuBar->setKeyShortcuts();
 
-       fullScreenDockWidgetState = 
settings.getByteArray("MainWidget/FullScreenDockWidgetState");
-#if defined Q_OS_MAC || defined Q_OS_ANDROID
-       show();
-#else
-       setVisible(settings.getBool("MainWidget/isVisible", true) ? true : 
!(QSystemTrayIcon::isSystemTrayAvailable() && tray->isVisible()));
-#endif
-
-       playlistDock->load(QMPlay2Core.getSettingsDir() + "Playlist.pls");
-
        volW->setVolume(settings.getInt("VolumeL"), settings.getInt("VolumeR"), 
true);
        if (settings.getBool("Mute"))
                menuBar->player->toggleMute->trigger();
@@ -354,6 +346,15 @@
        if (settings.getBool("RestoreVideoEqualizer"))
                QMPlay2GUI.videoAdjustment->restoreValues();
 
+       fullScreenDockWidgetState = 
settings.getByteArray("MainWidget/FullScreenDockWidgetState");
+#if defined Q_OS_MAC || defined Q_OS_ANDROID
+       show();
+#else
+       setVisible(settings.getBool("MainWidget/isVisible", true) ? true : 
!(QSystemTrayIcon::isSystemTrayAvailable() && tray->isVisible()));
+#endif
+
+       playlistDock->load(QMPlay2Core.getSettingsDir() + "Playlist.pls");
+
        bool noplay = false;
        while (!QMPArguments.first.isEmpty())
        {
@@ -918,6 +919,8 @@
                
menuBar->window->toggleFullScreen->setShortcuts(QList<QKeySequence>() << 
menuBar->window->toggleFullScreen->shortcut() << QKeySequence("ESC"));
                fullScreen = true;
                showFullScreen();
+
+               QMPlay2GUI.screenSaver->block();
        }
        else
        {
@@ -969,6 +972,8 @@
                playlistDock->scrollToCurrectItem();
 
                visibleQMPlay2Extensions.clear();
+
+               QMPlay2GUI.screenSaver->unblock();
        }
        QMPlay2Core.fullScreenChanged(fullScreen);
 }
@@ -1268,6 +1273,11 @@
        }
 }
 
+bool MainWidget::getFullScreen() const
+{
+       return fullScreen;
+}
+
 void MainWidget::mouseMoveEvent(QMouseEvent *e)
 {
        if ((fullScreen || isCompactView) && (e->buttons() == Qt::NoButton || 
videoDock->isTouch))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/QMPlay2-src-16.09.04/src/gui/MainWidget.hpp 
new/QMPlay2-src-16.09.21/src/gui/MainWidget.hpp
--- old/QMPlay2-src-16.09.04/src/gui/MainWidget.hpp     2016-09-02 
02:17:13.000000000 +0200
+++ new/QMPlay2-src-16.09.21/src/gui/MainWidget.hpp     2016-09-17 
22:55:14.000000000 +0200
@@ -44,6 +44,7 @@
 class MainWidget : public QMainWindow
 {
        friend class QMPlay2GUIClass;
+       Q_PROPERTY(bool fullScreen READ getFullScreen)
        Q_OBJECT
 public:
        MainWidget(QPair<QStringList, QStringList> &);
@@ -123,6 +124,8 @@
        void hideDocks();
        void restoreFocus();
 
+       bool getFullScreen() const;
+
        void mouseMoveEvent(QMouseEvent *);
        void leaveEvent(QEvent *);
        void closeEvent(QCloseEvent *);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/QMPlay2-src-16.09.04/src/gui/PlayClass.cpp 
new/QMPlay2-src-16.09.21/src/gui/PlayClass.cpp
--- old/QMPlay2-src-16.09.04/src/gui/PlayClass.cpp      2016-09-02 
18:42:22.000000000 +0200
+++ new/QMPlay2-src-16.09.21/src/gui/PlayClass.cpp      2016-09-21 
18:34:28.000000000 +0200
@@ -25,7 +25,6 @@
 #include <LibASS.hpp>
 #include <Main.hpp>
 
-#include <ScreenSaver.hpp>
 #include <VideoFrame.hpp>
 #include <Functions.hpp>
 #include <Settings.hpp>
@@ -122,14 +121,6 @@
 
        doSuspend = false;
 
-       screenSaverLastT = Functions::gettime();
-       screenSaver = new ScreenSaver;
-       if (!screenSaver->isOk())
-       {
-               delete screenSaver;
-               screenSaver = NULL;
-       }
-
        connect(&timTerminate, SIGNAL(timeout()), this, 
SLOT(timTerminateFinished()));
        connect(this, SIGNAL(aRatioUpdate(double)), this, 
SLOT(aRatioUpdated(double)));
        connect(this, SIGNAL(frameSizeUpdate(int, int)), this, 
SLOT(frameSizeUpdated(int, int)));
@@ -137,9 +128,7 @@
        connect(this, SIGNAL(audioParamsUpdate(quint8, quint32)), this, 
SLOT(audioParamsUpdated(quint8, quint32)));
 }
 PlayClass::~PlayClass()
-{
-       delete screenSaver;
-}
+{}
 
 void PlayClass::play(const QString &_url)
 {
@@ -240,23 +229,15 @@
 
 void PlayClass::chPos(double newPos, bool updateGUI)
 {
-       if (screenSaver && (QMPlay2GUI.mainW->isFullScreen() || 
hasVideoStream()))
+       if (canUpdatePos)
        {
-               const double t = Functions::gettime();
-               if (t - screenSaverLastT >= 0.75)
-               {
-                       QMetaObject::invokeMethod(screenSaver, "reset");
-                       screenSaverLastT = t;
-               }
+               if ((updateGUI || pos == -1) && ((int)newPos != (int)pos))
+                       emit updatePos(newPos);
+               pos = newPos;
+               lastSeekTo = SEEK_NOWHERE;
+               if (seekA >= 0 && seekB > seekA && pos >= seekB) //A-B Repeat
+                       seek(seekA);
        }
-       if (!canUpdatePos)
-               return;
-       if ((updateGUI || pos == -1) && ((int)newPos != (int)pos))
-               emit updatePos(newPos);
-       pos = newPos;
-       lastSeekTo = SEEK_NOWHERE;
-       if (seekA >= 0 && seekB > seekA && pos >= seekB) //A-B Repeat
-               seek(seekA);
 }
 
 void PlayClass::togglePause()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/QMPlay2-src-16.09.04/src/gui/PlayClass.hpp 
new/QMPlay2-src-16.09.21/src/gui/PlayClass.hpp
--- old/QMPlay2-src-16.09.04/src/gui/PlayClass.hpp      2016-08-19 
18:29:34.000000000 +0200
+++ new/QMPlay2-src-16.09.21/src/gui/PlayClass.hpp      2016-09-21 
19:02:02.000000000 +0200
@@ -30,7 +30,6 @@
 #include <QWaitCondition>
 
 class QMPlay2_OSD;
-class ScreenSaver;
 class DemuxerThr;
 class VideoThr;
 class AudioThr;
@@ -81,6 +80,7 @@
        {
                doSilenceOnStart = true;
        }
+
 private:
        inline bool hasVideoStream();
        inline bool hasAudioStream();
@@ -142,9 +142,6 @@
 #endif
        LibASS *ass;
 
-       double screenSaverLastT;
-       ScreenSaver *screenSaver;
-
        QMutex osdMutex, subsMutex;
        QMPlay2_OSD *osd;
        int videoWinW, videoWinH;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/QMPlay2-src-16.09.04/src/gui/ScreenSaver.cpp 
new/QMPlay2-src-16.09.21/src/gui/ScreenSaver.cpp
--- old/QMPlay2-src-16.09.04/src/gui/ScreenSaver.cpp    2016-07-21 
23:58:00.000000000 +0200
+++ new/QMPlay2-src-16.09.21/src/gui/ScreenSaver.cpp    2016-09-21 
21:01:29.000000000 +0200
@@ -11,29 +11,48 @@
 {
 public:
        inline ScreenSaverPriv() :
-               disp(NULL)
+               m_disp(NULL)
        {}
        inline ~ScreenSaverPriv()
        {
-               if (disp)
-                       XCloseDisplayFunc(disp);
+               if (m_disp)
+                       XCloseDisplayFunc(m_disp);
+       }
+
+       inline void block()
+       {
+               int interval, preferBlanking, allowExposures;
+               XGetScreenSaverFunc(m_disp, m_timeout, interval, 
preferBlanking, allowExposures);
+               XSetScreenSaverFunc(m_disp, 0, interval, preferBlanking, 
allowExposures);
+               XFlushFunc(m_disp);
+       }
+       inline void unblock()
+       {
+               int tmpTimeout, interval, preferBlanking, allowExposures;
+               XGetScreenSaverFunc(m_disp, tmpTimeout, interval, 
preferBlanking, allowExposures);
+               XSetScreenSaverFunc(m_disp, m_timeout, interval, 
preferBlanking, allowExposures);
+               XFlushFunc(m_disp);
        }
 
        typedef void *(*XOpenDisplayType)(const char *name);
-       typedef int (*XResetScreenSaverType)(void *dpy);
+       typedef int (*XGetScreenSaverType)(void *dpy, int &timeout, int 
&interval, int &preferBlanking, int &allowExposures);
+       typedef int (*XSetScreenSaverType)(void *dpy, int timeout, int 
interval, int prefer_blanking, int allow_exposures);
        typedef int (*XCloseDisplayType)(void *dpy);
        typedef int (*XFlushType)(void *dpy);
 
        XOpenDisplayType XOpenDisplayFunc;
-       XResetScreenSaverType XResetScreenSaverFunc;
+       XGetScreenSaverType XGetScreenSaverFunc;
+       XSetScreenSaverType XSetScreenSaverFunc;
        XCloseDisplayType XCloseDisplayFunc;
        XFlushType XFlushFunc;
 
-       void *disp;
+       void *m_disp;
+       int m_timeout;
 };
 
 ScreenSaver::ScreenSaver() :
-       priv(new ScreenSaverPriv)
+       m_priv(new ScreenSaverPriv),
+       m_ref(0)
 {
 #if QT_VERSION >= 0x050000
        if (QGuiApplication::platformName() != "xcb")
@@ -42,28 +61,31 @@
        QLibrary libX11("X11");
        if (libX11.load())
        {
-               priv->XOpenDisplayFunc = 
(ScreenSaverPriv::XOpenDisplayType)libX11.resolve("XOpenDisplay");
-               priv->XResetScreenSaverFunc = 
(ScreenSaverPriv::XResetScreenSaverType)libX11.resolve("XResetScreenSaver");
-               priv->XFlushFunc = 
(ScreenSaverPriv::XFlushType)libX11.resolve("XFlush");
-               priv->XCloseDisplayFunc = 
(ScreenSaverPriv::XCloseDisplayType)libX11.resolve("XCloseDisplay");
-               if (priv->XOpenDisplayFunc && priv->XResetScreenSaverFunc && 
priv->XFlushFunc && priv->XCloseDisplayFunc)
-                       priv->disp = priv->XOpenDisplayFunc(NULL);
+               m_priv->XOpenDisplayFunc = 
(ScreenSaverPriv::XOpenDisplayType)libX11.resolve("XOpenDisplay");
+               m_priv->XGetScreenSaverFunc = 
(ScreenSaverPriv::XGetScreenSaverType)libX11.resolve("XGetScreenSaver");
+               m_priv->XSetScreenSaverFunc = 
(ScreenSaverPriv::XSetScreenSaverType)libX11.resolve("XSetScreenSaver");
+               m_priv->XFlushFunc = 
(ScreenSaverPriv::XFlushType)libX11.resolve("XFlush");
+               m_priv->XCloseDisplayFunc = 
(ScreenSaverPriv::XCloseDisplayType)libX11.resolve("XCloseDisplay");
+               if (m_priv->XOpenDisplayFunc && m_priv->XGetScreenSaverFunc && 
m_priv->XSetScreenSaverFunc && m_priv->XFlushFunc && m_priv->XCloseDisplayFunc)
+                       m_priv->m_disp = m_priv->XOpenDisplayFunc(NULL);
        }
 }
 ScreenSaver::~ScreenSaver()
 {
-       delete priv;
+       if (m_ref > 0)
+               m_priv->unblock();
+       delete m_priv;
 }
 
-bool ScreenSaver::isOk() const
+void ScreenSaver::block()
 {
-       return priv->disp;
+       if (m_priv->m_disp && m_ref++ == 0)
+               m_priv->block();
 }
-
-void ScreenSaver::reset()
+void ScreenSaver::unblock()
 {
-       priv->XResetScreenSaverFunc(priv->disp);
-       priv->XFlushFunc(priv->disp);
+       if (m_priv->m_disp && --m_ref == 0)
+               m_priv->unblock();
 }
 
 #elif defined(Q_OS_WIN)
@@ -74,12 +96,7 @@
 
 static inline bool blockScreenSaver(MSG *msg, bool &blocked)
 {
-       if (msg->message == WM_SYSCOMMAND && ((msg->wParam & 0xFFF0) == 
SC_SCREENSAVE || (msg->wParam & 0xFFF0) == SC_MONITORPOWER) && blocked)
-       {
-               blocked = false;
-               return true;
-       }
-       return false;
+       return (blocked && msg->message == WM_SYSCOMMAND && ((msg->wParam & 
0xFFF0) == SC_SCREENSAVE || (msg->wParam & 0xFFF0) == SC_MONITORPOWER));
 }
 
 #if QT_VERSION >= 0x050000
@@ -102,18 +119,25 @@
        };
 
        ScreenSaver::ScreenSaver() :
-               priv(new ScreenSaverPriv)
+               m_priv(new ScreenSaverPriv),
+               m_ref(0)
        {
-               qApp->installNativeEventFilter(priv);
+               qApp->installNativeEventFilter(m_priv);
        }
        ScreenSaver::~ScreenSaver()
        {
-               delete priv;
+               delete m_priv;
        }
 
-       void ScreenSaver::reset()
+       void ScreenSaver::block()
+       {
+               if (m_ref++ == 0)
+                       m_priv->blocked = true;
+       }
+       void ScreenSaver::unblock()
        {
-               priv->blocked = true;
+               if (--m_ref == 0)
+                       m_priv->blocked = false;
        }
 #else
        static bool blocked = false;
@@ -124,38 +148,38 @@
        }
 
        ScreenSaver::ScreenSaver() :
-               priv(NULL)
+               m_priv(NULL),
+               m_ref(0)
        {
                qApp->setEventFilter(::eventFilter);
        }
        ScreenSaver::~ScreenSaver()
        {}
 
-       void ScreenSaver::reset()
+       void ScreenSaver::block()
        {
-               blocked = true;
+               if (m_ref++ == 0)
+                       blocked = true;
+       }
+       void ScreenSaver::unblock()
+       {
+               if (--m_ref == 0)
+                       blocked = false;
        }
 #endif
 
-bool ScreenSaver::isOk() const
-{
-       return true;
-}
-
 #else
 
 ScreenSaver::ScreenSaver() :
-       priv(NULL)
+       m_priv(NULL),
+       m_ref(0)
 {}
 ScreenSaver::~ScreenSaver()
 {}
 
-bool ScreenSaver::isOk() const
-{
-       return false;
-}
-
-void ScreenSaver::reset()
+void ScreenSaver::block()
+{}
+void ScreenSaver::unblock()
 {}
 
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/QMPlay2-src-16.09.04/src/gui/ScreenSaver.hpp 
new/QMPlay2-src-16.09.21/src/gui/ScreenSaver.hpp
--- old/QMPlay2-src-16.09.04/src/gui/ScreenSaver.hpp    2016-07-21 
23:58:00.000000000 +0200
+++ new/QMPlay2-src-16.09.21/src/gui/ScreenSaver.hpp    2016-09-21 
19:01:33.000000000 +0200
@@ -7,18 +7,17 @@
 
 class ScreenSaver : public QObject
 {
-       Q_OBJECT
        Q_DISABLE_COPY(ScreenSaver)
 public:
        ScreenSaver();
        ~ScreenSaver();
 
-       bool isOk() const;
+       void block();
+       void unblock();
 
-public slots:
-       void reset();
 private:
-       ScreenSaverPriv *priv;
+       ScreenSaverPriv *m_priv;
+       qint32 m_ref;
 };
 
 #endif // SCREENSAVER_HPP
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/QMPlay2-src-16.09.04/src/gui/VideoThr.cpp 
new/QMPlay2-src-16.09.21/src/gui/VideoThr.cpp
--- old/QMPlay2-src-16.09.04/src/gui/VideoThr.cpp       2016-09-03 
00:52:46.000000000 +0200
+++ new/QMPlay2-src-16.09.21/src/gui/VideoThr.cpp       2016-09-21 
19:25:55.000000000 +0200
@@ -29,6 +29,7 @@
 #include <Decoder.hpp>
 #include <LibASS.hpp>
 
+#include <ScreenSaver.hpp>
 #include <ImgScaler.hpp>
 #include <Functions.hpp>
 using Functions::gettime;
@@ -42,7 +43,7 @@
 VideoThr::VideoThr(PlayClass &playC, Writer *HWAccelWriter, const QStringList 
&pluginsName) :
        AVThread(playC, "video:", HWAccelWriter, pluginsName),
        doScreenshot(false),
-       deleteOSD(false), deleteFrame(false),
+       deleteOSD(false), deleteFrame(false), isScreenSaverBlocked(false),
        W(0), H(0), seq(0),
        sDec(NULL),
        HWAccelWriter(HWAccelWriter),
@@ -51,6 +52,8 @@
 VideoThr::~VideoThr()
 {
        QMPlay2GUI.videoAdjustment->enableControls();
+       if (isScreenSaverBlocked)
+               QMPlay2GUI.screenSaver->unblock();
        delete playC.osd;
        playC.osd = NULL;
        delete subtitles;
@@ -551,7 +554,14 @@
 {
        canWrite = true;
        if (lastSeq == seq && writer->readyWrite())
+       {
+               if (!isScreenSaverBlocked)
+               {
+                       QMPlay2GUI.screenSaver->block();
+                       isScreenSaverBlocked = true;
+               }
                videoWriter()->writeVideo(videoFrame);
+       }
 }
 void VideoThr::screenshot(VideoFrame videoFrame)
 {
@@ -584,5 +594,10 @@
 }
 void VideoThr::pause()
 {
+       if (isScreenSaverBlocked)
+       {
+               QMPlay2GUI.screenSaver->unblock();
+               isScreenSaverBlocked = false;
+       }
        writer->pause();
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/QMPlay2-src-16.09.04/src/gui/VideoThr.hpp 
new/QMPlay2-src-16.09.21/src/gui/VideoThr.hpp
--- old/QMPlay2-src-16.09.04/src/gui/VideoThr.hpp       2016-09-03 
00:50:07.000000000 +0200
+++ new/QMPlay2-src-16.09.21/src/gui/VideoThr.hpp       2016-09-21 
19:24:36.000000000 +0200
@@ -78,7 +78,7 @@
 
        void run();
 
-       bool deleteSubs, syncVtoA, doScreenshot, canWrite, deleteOSD, 
deleteFrame;
+       bool deleteSubs, syncVtoA, doScreenshot, canWrite, deleteOSD, 
deleteFrame, isScreenSaverBlocked;
        double lastSampleAspectRatio;
        int W, H;
        quint32 seq;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/QMPlay2-src-16.09.04/src/gui/resources.qrc 
new/QMPlay2-src-16.09.21/src/gui/resources.qrc
--- old/QMPlay2-src-16.09.04/src/gui/resources.qrc      2016-07-21 
23:58:00.000000000 +0200
+++ new/QMPlay2-src-16.09.21/src/gui/resources.qrc      2016-09-06 
15:56:57.000000000 +0200
@@ -29,6 +29,7 @@
                <file alias="edit-find">Icons/edit-find.png</file>
                <file 
alias="document-properties">Icons/document-properties.png</file>
                <file 
alias="application-x-mswinurl">Icons/application-x-mswinurl.png</file>
+               <file alias="video-display">Icons/video-display.png</file>
 
                <file>Colors/QMPlay1_dark.QMPlay2Color</file>
        </qresource>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/QMPlay2-src-16.09.04/src/modules/Extensions/Extensions.cpp 
new/QMPlay2-src-16.09.21/src/modules/Extensions/Extensions.cpp
--- old/QMPlay2-src-16.09.04/src/modules/Extensions/Extensions.cpp      
2016-09-02 16:33:12.000000000 +0200
+++ new/QMPlay2-src-16.09.21/src/modules/Extensions/Extensions.cpp      
2016-09-21 20:40:49.000000000 +0200
@@ -54,7 +54,11 @@
        init("YouTube/ShowAdditionalInfo", false);
        init("YouTube/MultiStream", true);
        init("YouTube/Subtitles", true);
-       init("YouTube/youtubedl", QString());
+#ifdef Q_OS_WIN
+       init("YouTube/youtubedl", QMPlay2Core.getSettingsDir() + 
"youtube-dl.exe");
+#else
+       init("YouTube/youtubedl", QMPlay2Core.getSettingsDir() + "youtube-dl");
+#endif
        init("YouTube/ItagVideoList", 
YouTubeW::getQualityPresetString(YouTubeW::_1080p60));
        init("YouTube/ItagAudioList", QStringList() << "171" << "251" << "140");
        init("YouTube/ItagList", QStringList() << "22" << "43" << "18");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/QMPlay2-src-16.09.04/src/modules/Extensions/YouTube.cpp 
new/QMPlay2-src-16.09.21/src/modules/Extensions/YouTube.cpp
--- old/QMPlay2-src-16.09.04/src/modules/Extensions/YouTube.cpp 2016-09-02 
16:04:53.000000000 +0200
+++ new/QMPlay2-src-16.09.21/src/modules/Extensions/YouTube.cpp 2016-09-21 
20:09:04.000000000 +0200
@@ -593,7 +593,7 @@
        QToolButton *qualityB = new QToolButton;
        qualityB->setPopupMode(QToolButton::InstantPopup);
        qualityB->setToolTip(tr("Quality"));
-       qualityB->setIcon(QIcon(":/quality"));
+       qualityB->setIcon(QMPlay2Core.getIconFromTheme("video-display"));
        qualityB->setMenu(qualityMenu);
        qualityB->setAutoRaise(true);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/QMPlay2-src-16.09.04/src/modules/Extensions/icons.qrc 
new/QMPlay2-src-16.09.21/src/modules/Extensions/icons.qrc
--- old/QMPlay2-src-16.09.04/src/modules/Extensions/icons.qrc   2016-09-02 
16:33:12.000000000 +0200
+++ new/QMPlay2-src-16.09.21/src/modules/Extensions/icons.qrc   2016-09-06 
15:55:52.000000000 +0200
@@ -4,7 +4,6 @@
                <file alias="prostopleer">prostopleer.png</file>
                <file alias="downloader">downloader.png</file>
                <file alias="youtube">youtube.png</file>
-               <file alias="quality">quality.png</file>
                <file alias="lastfm">lastfm.png</file>
                <file alias="radio">radio.png</file>
                <file alias="video">video.png</file>
Files old/QMPlay2-src-16.09.04/src/modules/Extensions/quality.png and 
new/QMPlay2-src-16.09.21/src/modules/Extensions/quality.png differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/QMPlay2-src-16.09.04/src/modules/OpenGL2/OpenGL2Common.cpp 
new/QMPlay2-src-16.09.21/src/modules/OpenGL2/OpenGL2Common.cpp
--- old/QMPlay2-src-16.09.04/src/modules/OpenGL2/OpenGL2Common.cpp      
2016-09-04 15:57:30.000000000 +0200
+++ new/QMPlay2-src-16.09.21/src/modules/OpenGL2/OpenGL2Common.cpp      
2016-09-19 23:17:39.000000000 +0200
@@ -572,7 +572,21 @@
         * on fullscreen in Windows Vista and newer on nVidia and AMD drivers.
        */
        if (preventFullscreen && QSysInfo::windowsVersion() >= QSysInfo::WV_6_0)
-               w->setProperty("PreventFullscreen", true);
+       {
+               Qt::CheckState compositionEnabled = Qt::Checked;
+               if (QSysInfo::windowsVersion() <= QSysInfo::WV_6_1) //Windows 8 
and 10 can't disable DWM composition
+               {
+                       typedef HRESULT (WINAPI 
*DwmIsCompositionEnabledProc)(BOOL *pfEnabled);
+                       DwmIsCompositionEnabledProc DwmIsCompositionEnabled = 
(DwmIsCompositionEnabledProc)GetProcAddress(GetModuleHandleA("dwmapi.dll"), 
"DwmIsCompositionEnabled");
+                       if (DwmIsCompositionEnabled)
+                       {
+                               BOOL enabled = false;
+                               if (DwmIsCompositionEnabled(&enabled) == S_OK 
&& !enabled)
+                                       compositionEnabled = 
Qt::PartiallyChecked;
+                       }
+               }
+               w->setProperty("preventFullscreen", (int)compositionEnabled);
+       }
 #endif
 }
 
@@ -711,10 +725,15 @@
                mouseTime = currTime;
 
                mousePos = newMousePos;
-               if (canWrapMouse)
-                       mouseWrapped = Functions::wrapMouse(widget(), mousePos);
-               else
-                       canWrapMouse = true;
+#if QT_VERSION >= 0x050300
+               if (e->source() == Qt::MouseEventNotSynthesized)
+#endif
+               {
+                       if (canWrapMouse)
+                               mouseWrapped = Functions::wrapMouse(widget(), 
mousePos, 1);
+                       else
+                               canWrapMouse = true;
+               }
 
                setMatrix = true;
                updateGL(true);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/QMPlay2-src-16.09.04/src/modules/OpenGL2/OpenGL2CommonQt5.cpp 
new/QMPlay2-src-16.09.21/src/modules/OpenGL2/OpenGL2CommonQt5.cpp
--- old/QMPlay2-src-16.09.04/src/modules/OpenGL2/OpenGL2CommonQt5.cpp   
2016-07-21 23:58:00.000000000 +0200
+++ new/QMPlay2-src-16.09.21/src/modules/OpenGL2/OpenGL2CommonQt5.cpp   
2016-09-17 22:53:36.000000000 +0200
@@ -28,8 +28,8 @@
        {
                QOffscreenSurface offscreenSurface;
                offscreenSurface.create();
-               glCtx.makeCurrent(&offscreenSurface);
-               testGLInternal();
+               if ((isOK = glCtx.makeCurrent(&offscreenSurface)))
+                       testGLInternal();
        }
        return isOK;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/QMPlay2-src-16.09.04/src/qmplay2/Functions.cpp 
new/QMPlay2-src-16.09.21/src/qmplay2/Functions.cpp
--- old/QMPlay2-src-16.09.04/src/qmplay2/Functions.cpp  2016-08-16 
00:15:52.000000000 +0200
+++ new/QMPlay2-src-16.09.21/src/qmplay2/Functions.cpp  2016-09-17 
22:53:36.000000000 +0200
@@ -546,30 +546,30 @@
        return srate;
 }
 
-bool Functions::wrapMouse(QWidget *widget, QPoint &mousePos)
+bool Functions::wrapMouse(QWidget *widget, QPoint &mousePos, int margin)
 {
        const QSize winSize = widget->size();
        bool doWrap = false;
 
-       if (mousePos.x() >= winSize.width() - 1)
+       if (mousePos.x() >= winSize.width() - (margin + 1))
        {
-               mousePos.setX(1);
+               mousePos.setX(margin + 1);
                doWrap = true;
        }
-       else if (mousePos.x() <= 0)
+       else if (mousePos.x() <= margin)
        {
-               mousePos.setX(winSize.width() - 2);
+               mousePos.setX(winSize.width() - (margin + 2));
                doWrap = true;
        }
 
-       if (mousePos.y() >= winSize.height() - 1)
+       if (mousePos.y() >= winSize.height() - (margin + 1))
        {
-               mousePos.setY(1);
+               mousePos.setY(margin + 1);
                doWrap = true;
        }
-       else if (mousePos.y() <= 0)
+       else if (mousePos.y() <= margin)
        {
-               mousePos.setY(winSize.height() - 2);
+               mousePos.setY(winSize.height() - (margin + 2));
                doWrap = true;
        }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/QMPlay2-src-16.09.04/src/qmplay2/InDockW.cpp 
new/QMPlay2-src-16.09.21/src/qmplay2/InDockW.cpp
--- old/QMPlay2-src-16.09.04/src/qmplay2/InDockW.cpp    2016-07-21 
23:58:00.000000000 +0200
+++ new/QMPlay2-src-16.09.21/src/qmplay2/InDockW.cpp    2016-09-17 
22:53:36.000000000 +0200
@@ -128,23 +128,30 @@
 {
        if (w)
        {
-               int mappedY = mapToParent(QPoint()).y();
+               int X = 0;
                int Y = 0;
                int W = width();
                int H = height() + loseHeight;
+
+               const int mappedY = mapToParent(QPoint()).y();
                if (mappedY < 0)
                {
                        H += mappedY;
                        Y -= mappedY;
                }
-               if (loseHeight && w->property("PreventFullscreen").toBool())
+
+               const Qt::CheckState preventFullscreen = 
(Qt::CheckState)w->property("preventFullscreen").value<int>();
+               if ((preventFullscreen == Qt::Checked || (loseHeight && 
preventFullscreen == Qt::PartiallyChecked)) && 
window()->property("fullScreen").toBool())
                {
+                       X -= 1;
                        Y -= 1;
+                       W += 2;
                        H += 2;
                }
-               if (w->geometry() != QRect(0, Y, W, H))
+
+               if (w->geometry() != QRect(X, Y, W, H))
                {
-                       w->setGeometry(0, Y, W, H);
+                       w->setGeometry(X, Y, W, H);
                        emit resized(W, H);
                }
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/QMPlay2-src-16.09.04/src/qmplay2/headers/Functions.hpp 
new/QMPlay2-src-16.09.21/src/qmplay2/headers/Functions.hpp
--- old/QMPlay2-src-16.09.04/src/qmplay2/headers/Functions.hpp  2016-07-21 
23:58:00.000000000 +0200
+++ new/QMPlay2-src-16.09.21/src/qmplay2/headers/Functions.hpp  2016-09-17 
22:53:36.000000000 +0200
@@ -138,7 +138,7 @@
 
        quint32 getBestSampleRate();
 
-       bool wrapMouse(QWidget *widget, QPoint &mousePos);
+       bool wrapMouse(QWidget *widget, QPoint &mousePos, int margin = 0);
 }
 
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/QMPlay2-src-16.09.04/src/qmplay2/headers/Version.hpp 
new/QMPlay2-src-16.09.21/src/qmplay2/headers/Version.hpp
--- old/QMPlay2-src-16.09.04/src/qmplay2/headers/Version.hpp    2016-09-05 
01:02:15.000000000 +0200
+++ new/QMPlay2-src-16.09.21/src/qmplay2/headers/Version.hpp    2016-09-21 
19:54:57.000000000 +0200
@@ -19,7 +19,7 @@
 #ifndef VERSION_HPP
 #define VERSION_HPP
 
-#define QMPlay2Version "16.09.04"
+#define QMPlay2Version "16.09.21"
 #define QMPlay2UserAgent ("QMPlay2/" QMPlay2Version)
 
 #endif // VERSION_HPP
Files old/QMPlay2-src-16.09.04/src/svg/Concept/gui/video-display.svgz and 
new/QMPlay2-src-16.09.21/src/svg/Concept/gui/video-display.svgz differ
Files old/QMPlay2-src-16.09.04/src/svg/Concept/modules/Extensions/quality.svgz 
and new/QMPlay2-src-16.09.21/src/svg/Concept/modules/Extensions/quality.svgz 
differ


Reply via email to