File qimgv-pluginpath_2.patch of Package qimgv

From dab45dd74ca2e8c208548f3e21546dc3e91acf34 Mon Sep 17 00:00:00 2001
From: easymodo <easymodofrf@gmail.com>
Date: Sun, 31 May 2020 17:56:31 +0300
Subject: [PATCH] [cmake] use absolute path for player .so; initPlayer() -
 tweak file checks & error messages

---
 CMakeLists.txt                             |  6 +++---
 qimgv/CMakeLists.txt                       |  2 +-
 qimgv/gui/viewers/videoplayerinitproxy.cpp | 25 +++++++++-------------
 qimgv/gui/viewers/videoplayerinitproxy.h   |  1 +
 4 files changed, 15 insertions(+), 19 deletions(-)

Index: qimgv-0.9.1/CMakeLists.txt
===================================================================
--- qimgv-0.9.1.orig/CMakeLists.txt
+++ qimgv-0.9.1/CMakeLists.txt
@@ -12,10 +12,10 @@ project(qimgv
 #endif()
 message(STATUS "Build configuration: " ${CMAKE_BUILD_TYPE})
 
-set(QIMGV_PLUGIN_PATH "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/qimgv")
-ADD_DEFINITIONS(-D_QIMGV_PLUGIN_PATH="${QIMGV_PLUGIN_PATH}/")
+set(QIMGV_PLUGIN_DIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/qimgv")
+ADD_DEFINITIONS(-D_QIMGV_PLUGIN_DIR="${QIMGV_PLUGIN_DIR}")
 
-message(STATUS "Plugin path: " ${QIMGV_PLUGIN_PATH})
+message(STATUS "Plugin dir: " ${QIMGV_PLUGIN_DIR})
 
 # detect if libstdc++ is in use to know if libstdc++fs should be linked
 include(CheckCXXSourceCompiles)
Index: qimgv-0.9.1/qimgv/CMakeLists.txt
===================================================================
--- qimgv-0.9.1.orig/qimgv/CMakeLists.txt
+++ qimgv-0.9.1/qimgv/CMakeLists.txt
@@ -46,7 +46,7 @@ endif()
 if(VIDEO_SUPPORT)
     target_compile_definitions(qimgv PRIVATE USE_MPV)
     if(NOT WIN32)
-        ADD_DEFINITIONS(-D_QIMGV_PLAYER_PLUGIN="player_mpv.so")
+        ADD_DEFINITIONS(-D_QIMGV_PLAYER_PLUGIN="${QIMGV_PLUGIN_DIR}/player_mpv.so")
     endif()
 endif()
 if(OPENCV_SUPPORT)
Index: qimgv-0.9.1/qimgv/gui/viewers/videoplayerinitproxy.cpp
===================================================================
--- qimgv-0.9.1.orig/qimgv/gui/viewers/videoplayerinitproxy.cpp
+++ qimgv-0.9.1/qimgv/gui/viewers/videoplayerinitproxy.cpp
@@ -1,11 +1,5 @@
 #include "videoplayerinitproxy.h"
 
-#ifdef _QIMGV_PLUGIN_PATH
-    #define QIMGV_PLUGIN_PATH _QIMGV_PLUGIN_PATH
-#else
-    #define QIMGV_PLUGIN_PATH ""
-#endif
-
 #ifdef _QIMGV_PLAYER_PLUGIN
     #define QIMGV_PLAYER_PLUGIN _QIMGV_PLAYER_PLUGIN
 #else
@@ -38,21 +32,22 @@ std::shared_ptr<VideoPlayer> VideoPlayer
 }
 
 inline bool VideoPlayerInitProxy::initPlayer() {
-    QString path = QString(QIMGV_PLUGIN_PATH) + QIMGV_PLAYER_PLUGIN;
+    QString path = QIMGV_PLAYER_PLUGIN;
 #ifndef USE_MPV
     return false;
 #endif
     if(player)
         return true;
-#ifdef __linux
-    if(QFile::exists(path)) {
+#ifdef _WIN32
+    playerLib.setFileName("plugins/player_mpv.dll");
+#else
+    QFileInfo pluginFile(path);
+    if(pluginFile.isFile() && pluginFile.isReadable()) {
         playerLib.setFileName(path);
     } else {
         qDebug() << "Plugin at:" << path << "does not exist.";
-        playerLib.setFileName("qimgv_player_mpv"); // let QLibrary try to find it
+        return false;
     }
-#else
-    playerLib.setFileName("libqimgv_player_mpv.dll");
 #endif
     typedef VideoPlayer* (*createPlayerWidgetFn)();
     createPlayerWidgetFn fn = (createPlayerWidgetFn) playerLib.resolve("CreatePlayerWidget");
@@ -61,7 +56,7 @@ inline bool VideoPlayerInitProxy::initPl
         player.reset(pl);
     }
     if(!player) {
-        qDebug() << "Could not load plugin:" << playerLib.fileName();
+        qDebug() << "Could not load plugin:" << playerLib.fileName() << ". Last error: " << playerLib.errorString();
         return false;
     }
 
@@ -75,8 +70,8 @@ inline bool VideoPlayerInitProxy::initPl
     setFocusProxy(player.get());
     connect(player.get(), SIGNAL(durationChanged(int)), this, SIGNAL(durationChanged(int)));
     connect(player.get(), SIGNAL(positionChanged(int)), this, SIGNAL(positionChanged(int)));
-    connect(player.get(), SIGNAL(videoPaused(bool)), this, SIGNAL(videoPaused(bool)));
-    connect(player.get(), SIGNAL(playbackFinished()), this, SIGNAL(playbackFinished()));
+    connect(player.get(), SIGNAL(videoPaused(bool)),    this, SIGNAL(videoPaused(bool)));
+    connect(player.get(), SIGNAL(playbackFinished()),   this, SIGNAL(playbackFinished()));
     return true;
 }
 
Index: qimgv-0.9.1/qimgv/gui/viewers/videoplayerinitproxy.h
===================================================================
--- qimgv-0.9.1.orig/qimgv/gui/viewers/videoplayerinitproxy.h
+++ qimgv-0.9.1/qimgv/gui/viewers/videoplayerinitproxy.h
@@ -7,6 +7,7 @@
 #include "videoplayer.h"
 #include "settings.h"
 #include <QLibrary>
+#include <QFileInfo>
 #include <QDebug>
 
 class VideoPlayerInitProxy : public VideoPlayer {
openSUSE Build Service is sponsored by