Accepting request 799469 from graphics
OBS-URL: https://build.opensuse.org/request/show/799469 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/qimgv?expand=0&rev=16
This commit is contained in:
commit
36fb1f32af
@ -1,430 +0,0 @@
|
|||||||
From 935c6f35b4d0315b9c3aadcf375072998d542eb0 Mon Sep 17 00:00:00 2001
|
|
||||||
From: easymodo <easymodofrf@gmail.com>
|
|
||||||
Date: Thu, 19 Mar 2020 14:42:35 +0200
|
|
||||||
Subject: [PATCH] [mpv] include qthelper.hpp in project #184
|
|
||||||
|
|
||||||
---
|
|
||||||
qimgv_libs/qimgv_player_mpv/CMakeLists.txt | 3 +-
|
|
||||||
qimgv_libs/qimgv_player_mpv/src/mpvwidget.h | 2 +-
|
|
||||||
qimgv_libs/qimgv_player_mpv/src/qthelper.hpp | 386 +++++++++++++++++++
|
|
||||||
3 files changed, 389 insertions(+), 2 deletions(-)
|
|
||||||
create mode 100644 qimgv_libs/qimgv_player_mpv/src/qthelper.hpp
|
|
||||||
|
|
||||||
Index: qimgv-0.8.9/qimgv_libs/qimgv_player_mpv/CMakeLists.txt
|
|
||||||
===================================================================
|
|
||||||
--- qimgv-0.8.9.orig/qimgv_libs/qimgv_player_mpv/CMakeLists.txt
|
|
||||||
+++ qimgv-0.8.9/qimgv_libs/qimgv_player_mpv/CMakeLists.txt
|
|
||||||
@@ -15,7 +15,8 @@ include(GNUInstallDirs)
|
|
||||||
add_library(qimgv_player_mpv STATIC
|
|
||||||
src/videoplayer.cpp
|
|
||||||
src/mpvwidget.cpp
|
|
||||||
- src/videoplayermpv.cpp)
|
|
||||||
+ src/videoplayermpv.cpp
|
|
||||||
+ src/qthelper.hpp)
|
|
||||||
|
|
||||||
target_compile_features(qimgv_player_mpv PRIVATE cxx_std_11)
|
|
||||||
|
|
||||||
Index: qimgv-0.8.9/qimgv_libs/qimgv_player_mpv/src/mpvwidget.h
|
|
||||||
===================================================================
|
|
||||||
--- qimgv-0.8.9.orig/qimgv_libs/qimgv_player_mpv/src/mpvwidget.h
|
|
||||||
+++ qimgv-0.8.9/qimgv_libs/qimgv_player_mpv/src/mpvwidget.h
|
|
||||||
@@ -3,7 +3,7 @@
|
|
||||||
#include <QtWidgets/QOpenGLWidget>
|
|
||||||
#include <mpv/client.h>
|
|
||||||
#include <mpv/opengl_cb.h>
|
|
||||||
-#include <mpv/qthelper.hpp>
|
|
||||||
+#include "qthelper.hpp"
|
|
||||||
#include <QDebug>
|
|
||||||
#include <ctime>
|
|
||||||
#include <QSurfaceFormat>
|
|
||||||
Index: qimgv-0.8.9/qimgv_libs/qimgv_player_mpv/src/qthelper.hpp
|
|
||||||
===================================================================
|
|
||||||
--- /dev/null
|
|
||||||
+++ qimgv-0.8.9/qimgv_libs/qimgv_player_mpv/src/qthelper.hpp
|
|
||||||
@@ -0,0 +1,386 @@
|
|
||||||
+/* Copyright (C) 2017 the mpv developers
|
|
||||||
+ *
|
|
||||||
+ * Permission to use, copy, modify, and/or distribute this software for any
|
|
||||||
+ * purpose with or without fee is hereby granted, provided that the above
|
|
||||||
+ * copyright notice and this permission notice appear in all copies.
|
|
||||||
+ *
|
|
||||||
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
||||||
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
||||||
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
||||||
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
||||||
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
||||||
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
||||||
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+#ifndef MPV_CLIENT_API_QTHELPER_H_
|
|
||||||
+#define MPV_CLIENT_API_QTHELPER_H_
|
|
||||||
+
|
|
||||||
+#include <mpv/client.h>
|
|
||||||
+
|
|
||||||
+#if !MPV_ENABLE_DEPRECATED
|
|
||||||
+#error "This helper is deprecated. Copy it into your project instead."
|
|
||||||
+#else
|
|
||||||
+
|
|
||||||
+/**
|
|
||||||
+ * Note: these helpers are provided for convenience for C++/Qt applications.
|
|
||||||
+ * This is based on the public API in client.h, and it does not encode any
|
|
||||||
+ * knowledge that is not known or guaranteed outside of the C client API. You
|
|
||||||
+ * can even copy and modify this code as you like, or implement similar things
|
|
||||||
+ * for other languages.
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+#include <cstring>
|
|
||||||
+
|
|
||||||
+#include <QVariant>
|
|
||||||
+#include <QString>
|
|
||||||
+#include <QList>
|
|
||||||
+#include <QHash>
|
|
||||||
+#include <QSharedPointer>
|
|
||||||
+#include <QMetaType>
|
|
||||||
+
|
|
||||||
+namespace mpv {
|
|
||||||
+namespace qt {
|
|
||||||
+
|
|
||||||
+// Wrapper around mpv_handle. Does refcounting under the hood.
|
|
||||||
+class Handle
|
|
||||||
+{
|
|
||||||
+ struct container {
|
|
||||||
+ container(mpv_handle *h) : mpv(h) {}
|
|
||||||
+ ~container() { mpv_terminate_destroy(mpv); }
|
|
||||||
+ mpv_handle *mpv;
|
|
||||||
+ };
|
|
||||||
+ QSharedPointer<container> sptr;
|
|
||||||
+public:
|
|
||||||
+ // Construct a new Handle from a raw mpv_handle with refcount 1. If the
|
|
||||||
+ // last Handle goes out of scope, the mpv_handle will be destroyed with
|
|
||||||
+ // mpv_terminate_destroy().
|
|
||||||
+ // Never destroy the mpv_handle manually when using this wrapper. You
|
|
||||||
+ // will create dangling pointers. Just let the wrapper take care of
|
|
||||||
+ // destroying the mpv_handle.
|
|
||||||
+ // Never create multiple wrappers from the same raw mpv_handle; copy the
|
|
||||||
+ // wrapper instead (that's what it's for).
|
|
||||||
+ static Handle FromRawHandle(mpv_handle *handle) {
|
|
||||||
+ Handle h;
|
|
||||||
+ h.sptr = QSharedPointer<container>(new container(handle));
|
|
||||||
+ return h;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ // Return the raw handle; for use with the libmpv C API.
|
|
||||||
+ operator mpv_handle*() const { return sptr ? (*sptr).mpv : 0; }
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+static inline QVariant node_to_variant(const mpv_node *node)
|
|
||||||
+{
|
|
||||||
+ switch (node->format) {
|
|
||||||
+ case MPV_FORMAT_STRING:
|
|
||||||
+ return QVariant(QString::fromUtf8(node->u.string));
|
|
||||||
+ case MPV_FORMAT_FLAG:
|
|
||||||
+ return QVariant(static_cast<bool>(node->u.flag));
|
|
||||||
+ case MPV_FORMAT_INT64:
|
|
||||||
+ return QVariant(static_cast<qlonglong>(node->u.int64));
|
|
||||||
+ case MPV_FORMAT_DOUBLE:
|
|
||||||
+ return QVariant(node->u.double_);
|
|
||||||
+ case MPV_FORMAT_NODE_ARRAY: {
|
|
||||||
+ mpv_node_list *list = node->u.list;
|
|
||||||
+ QVariantList qlist;
|
|
||||||
+ for (int n = 0; n < list->num; n++)
|
|
||||||
+ qlist.append(node_to_variant(&list->values[n]));
|
|
||||||
+ return QVariant(qlist);
|
|
||||||
+ }
|
|
||||||
+ case MPV_FORMAT_NODE_MAP: {
|
|
||||||
+ mpv_node_list *list = node->u.list;
|
|
||||||
+ QVariantMap qmap;
|
|
||||||
+ for (int n = 0; n < list->num; n++) {
|
|
||||||
+ qmap.insert(QString::fromUtf8(list->keys[n]),
|
|
||||||
+ node_to_variant(&list->values[n]));
|
|
||||||
+ }
|
|
||||||
+ return QVariant(qmap);
|
|
||||||
+ }
|
|
||||||
+ default: // MPV_FORMAT_NONE, unknown values (e.g. future extensions)
|
|
||||||
+ return QVariant();
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+struct node_builder {
|
|
||||||
+ node_builder(const QVariant& v) {
|
|
||||||
+ set(&node_, v);
|
|
||||||
+ }
|
|
||||||
+ ~node_builder() {
|
|
||||||
+ free_node(&node_);
|
|
||||||
+ }
|
|
||||||
+ mpv_node *node() { return &node_; }
|
|
||||||
+private:
|
|
||||||
+ Q_DISABLE_COPY(node_builder)
|
|
||||||
+ mpv_node node_;
|
|
||||||
+ mpv_node_list *create_list(mpv_node *dst, bool is_map, int num) {
|
|
||||||
+ dst->format = is_map ? MPV_FORMAT_NODE_MAP : MPV_FORMAT_NODE_ARRAY;
|
|
||||||
+ mpv_node_list *list = new mpv_node_list();
|
|
||||||
+ dst->u.list = list;
|
|
||||||
+ if (!list)
|
|
||||||
+ goto err;
|
|
||||||
+ list->values = new mpv_node[num]();
|
|
||||||
+ if (!list->values)
|
|
||||||
+ goto err;
|
|
||||||
+ if (is_map) {
|
|
||||||
+ list->keys = new char*[num]();
|
|
||||||
+ if (!list->keys)
|
|
||||||
+ goto err;
|
|
||||||
+ }
|
|
||||||
+ return list;
|
|
||||||
+ err:
|
|
||||||
+ free_node(dst);
|
|
||||||
+ return NULL;
|
|
||||||
+ }
|
|
||||||
+ char *dup_qstring(const QString &s) {
|
|
||||||
+ QByteArray b = s.toUtf8();
|
|
||||||
+ char *r = new char[b.size() + 1];
|
|
||||||
+ if (r)
|
|
||||||
+ std::memcpy(r, b.data(), b.size() + 1);
|
|
||||||
+ return r;
|
|
||||||
+ }
|
|
||||||
+ bool test_type(const QVariant &v, QMetaType::Type t) {
|
|
||||||
+ // The Qt docs say: "Although this function is declared as returning
|
|
||||||
+ // "QVariant::Type(obsolete), the return value should be interpreted
|
|
||||||
+ // as QMetaType::Type."
|
|
||||||
+ // So a cast really seems to be needed to avoid warnings (urgh).
|
|
||||||
+ return static_cast<int>(v.type()) == static_cast<int>(t);
|
|
||||||
+ }
|
|
||||||
+ void set(mpv_node *dst, const QVariant &src) {
|
|
||||||
+ if (test_type(src, QMetaType::QString)) {
|
|
||||||
+ dst->format = MPV_FORMAT_STRING;
|
|
||||||
+ dst->u.string = dup_qstring(src.toString());
|
|
||||||
+ if (!dst->u.string)
|
|
||||||
+ goto fail;
|
|
||||||
+ } else if (test_type(src, QMetaType::Bool)) {
|
|
||||||
+ dst->format = MPV_FORMAT_FLAG;
|
|
||||||
+ dst->u.flag = src.toBool() ? 1 : 0;
|
|
||||||
+ } else if (test_type(src, QMetaType::Int) ||
|
|
||||||
+ test_type(src, QMetaType::LongLong) ||
|
|
||||||
+ test_type(src, QMetaType::UInt) ||
|
|
||||||
+ test_type(src, QMetaType::ULongLong))
|
|
||||||
+ {
|
|
||||||
+ dst->format = MPV_FORMAT_INT64;
|
|
||||||
+ dst->u.int64 = src.toLongLong();
|
|
||||||
+ } else if (test_type(src, QMetaType::Double)) {
|
|
||||||
+ dst->format = MPV_FORMAT_DOUBLE;
|
|
||||||
+ dst->u.double_ = src.toDouble();
|
|
||||||
+ } else if (src.canConvert<QVariantList>()) {
|
|
||||||
+ QVariantList qlist = src.toList();
|
|
||||||
+ mpv_node_list *list = create_list(dst, false, qlist.size());
|
|
||||||
+ if (!list)
|
|
||||||
+ goto fail;
|
|
||||||
+ list->num = qlist.size();
|
|
||||||
+ for (int n = 0; n < qlist.size(); n++)
|
|
||||||
+ set(&list->values[n], qlist[n]);
|
|
||||||
+ } else if (src.canConvert<QVariantMap>()) {
|
|
||||||
+ QVariantMap qmap = src.toMap();
|
|
||||||
+ mpv_node_list *list = create_list(dst, true, qmap.size());
|
|
||||||
+ if (!list)
|
|
||||||
+ goto fail;
|
|
||||||
+ list->num = qmap.size();
|
|
||||||
+ for (int n = 0; n < qmap.size(); n++) {
|
|
||||||
+ list->keys[n] = dup_qstring(qmap.keys()[n]);
|
|
||||||
+ if (!list->keys[n]) {
|
|
||||||
+ free_node(dst);
|
|
||||||
+ goto fail;
|
|
||||||
+ }
|
|
||||||
+ set(&list->values[n], qmap.values()[n]);
|
|
||||||
+ }
|
|
||||||
+ } else {
|
|
||||||
+ goto fail;
|
|
||||||
+ }
|
|
||||||
+ return;
|
|
||||||
+ fail:
|
|
||||||
+ dst->format = MPV_FORMAT_NONE;
|
|
||||||
+ }
|
|
||||||
+ void free_node(mpv_node *dst) {
|
|
||||||
+ switch (dst->format) {
|
|
||||||
+ case MPV_FORMAT_STRING:
|
|
||||||
+ delete[] dst->u.string;
|
|
||||||
+ break;
|
|
||||||
+ case MPV_FORMAT_NODE_ARRAY:
|
|
||||||
+ case MPV_FORMAT_NODE_MAP: {
|
|
||||||
+ mpv_node_list *list = dst->u.list;
|
|
||||||
+ if (list) {
|
|
||||||
+ for (int n = 0; n < list->num; n++) {
|
|
||||||
+ if (list->keys)
|
|
||||||
+ delete[] list->keys[n];
|
|
||||||
+ if (list->values)
|
|
||||||
+ free_node(&list->values[n]);
|
|
||||||
+ }
|
|
||||||
+ delete[] list->keys;
|
|
||||||
+ delete[] list->values;
|
|
||||||
+ }
|
|
||||||
+ delete list;
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
+ default: ;
|
|
||||||
+ }
|
|
||||||
+ dst->format = MPV_FORMAT_NONE;
|
|
||||||
+ }
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+/**
|
|
||||||
+ * RAII wrapper that calls mpv_free_node_contents() on the pointer.
|
|
||||||
+ */
|
|
||||||
+struct node_autofree {
|
|
||||||
+ mpv_node *ptr;
|
|
||||||
+ node_autofree(mpv_node *a_ptr) : ptr(a_ptr) {}
|
|
||||||
+ ~node_autofree() { mpv_free_node_contents(ptr); }
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+#if MPV_ENABLE_DEPRECATED
|
|
||||||
+
|
|
||||||
+/**
|
|
||||||
+ * Return the given property as mpv_node converted to QVariant, or QVariant()
|
|
||||||
+ * on error.
|
|
||||||
+ *
|
|
||||||
+ * @deprecated use get_property() instead
|
|
||||||
+ *
|
|
||||||
+ * @param name the property name
|
|
||||||
+ */
|
|
||||||
+static inline QVariant get_property_variant(mpv_handle *ctx, const QString &name)
|
|
||||||
+{
|
|
||||||
+ mpv_node node;
|
|
||||||
+ if (mpv_get_property(ctx, name.toUtf8().data(), MPV_FORMAT_NODE, &node) < 0)
|
|
||||||
+ return QVariant();
|
|
||||||
+ node_autofree f(&node);
|
|
||||||
+ return node_to_variant(&node);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+/**
|
|
||||||
+ * Set the given property as mpv_node converted from the QVariant argument.
|
|
||||||
+
|
|
||||||
+ * @deprecated use set_property() instead
|
|
||||||
+ */
|
|
||||||
+static inline int set_property_variant(mpv_handle *ctx, const QString &name,
|
|
||||||
+ const QVariant &v)
|
|
||||||
+{
|
|
||||||
+ node_builder node(v);
|
|
||||||
+ return mpv_set_property(ctx, name.toUtf8().data(), MPV_FORMAT_NODE, node.node());
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+/**
|
|
||||||
+ * Set the given option as mpv_node converted from the QVariant argument.
|
|
||||||
+ *
|
|
||||||
+ * @deprecated use set_property() instead
|
|
||||||
+ */
|
|
||||||
+static inline int set_option_variant(mpv_handle *ctx, const QString &name,
|
|
||||||
+ const QVariant &v)
|
|
||||||
+{
|
|
||||||
+ node_builder node(v);
|
|
||||||
+ return mpv_set_option(ctx, name.toUtf8().data(), MPV_FORMAT_NODE, node.node());
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+/**
|
|
||||||
+ * mpv_command_node() equivalent. Returns QVariant() on error (and
|
|
||||||
+ * unfortunately, the same on success).
|
|
||||||
+ *
|
|
||||||
+ * @deprecated use command() instead
|
|
||||||
+ */
|
|
||||||
+static inline QVariant command_variant(mpv_handle *ctx, const QVariant &args)
|
|
||||||
+{
|
|
||||||
+ node_builder node(args);
|
|
||||||
+ mpv_node res;
|
|
||||||
+ if (mpv_command_node(ctx, node.node(), &res) < 0)
|
|
||||||
+ return QVariant();
|
|
||||||
+ node_autofree f(&res);
|
|
||||||
+ return node_to_variant(&res);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
+/**
|
|
||||||
+ * This is used to return error codes wrapped in QVariant for functions which
|
|
||||||
+ * return QVariant.
|
|
||||||
+ *
|
|
||||||
+ * You can use get_error() or is_error() to extract the error status from a
|
|
||||||
+ * QVariant value.
|
|
||||||
+ */
|
|
||||||
+struct ErrorReturn
|
|
||||||
+{
|
|
||||||
+ /**
|
|
||||||
+ * enum mpv_error value (or a value outside of it if ABI was extended)
|
|
||||||
+ */
|
|
||||||
+ int error;
|
|
||||||
+
|
|
||||||
+ ErrorReturn() : error(0) {}
|
|
||||||
+ explicit ErrorReturn(int err) : error(err) {}
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+/**
|
|
||||||
+ * Return the mpv error code packed into a QVariant, or 0 (success) if it's not
|
|
||||||
+ * an error value.
|
|
||||||
+ *
|
|
||||||
+ * @return error code (<0) or success (>=0)
|
|
||||||
+ */
|
|
||||||
+static inline int get_error(const QVariant &v)
|
|
||||||
+{
|
|
||||||
+ if (!v.canConvert<ErrorReturn>())
|
|
||||||
+ return 0;
|
|
||||||
+ return v.value<ErrorReturn>().error;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+/**
|
|
||||||
+ * Return whether the QVariant carries a mpv error code.
|
|
||||||
+ */
|
|
||||||
+static inline bool is_error(const QVariant &v)
|
|
||||||
+{
|
|
||||||
+ return get_error(v) < 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+/**
|
|
||||||
+ * Return the given property as mpv_node converted to QVariant, or QVariant()
|
|
||||||
+ * on error.
|
|
||||||
+ *
|
|
||||||
+ * @param name the property name
|
|
||||||
+ * @return the property value, or an ErrorReturn with the error code
|
|
||||||
+ */
|
|
||||||
+static inline QVariant get_property(mpv_handle *ctx, const QString &name)
|
|
||||||
+{
|
|
||||||
+ mpv_node node;
|
|
||||||
+ int err = mpv_get_property(ctx, name.toUtf8().data(), MPV_FORMAT_NODE, &node);
|
|
||||||
+ if (err < 0)
|
|
||||||
+ return QVariant::fromValue(ErrorReturn(err));
|
|
||||||
+ node_autofree f(&node);
|
|
||||||
+ return node_to_variant(&node);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+/**
|
|
||||||
+ * Set the given property as mpv_node converted from the QVariant argument.
|
|
||||||
+ *
|
|
||||||
+ * @return mpv error code (<0 on error, >= 0 on success)
|
|
||||||
+ */
|
|
||||||
+static inline int set_property(mpv_handle *ctx, const QString &name,
|
|
||||||
+ const QVariant &v)
|
|
||||||
+{
|
|
||||||
+ node_builder node(v);
|
|
||||||
+ return mpv_set_property(ctx, name.toUtf8().data(), MPV_FORMAT_NODE, node.node());
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+/**
|
|
||||||
+ * mpv_command_node() equivalent.
|
|
||||||
+ *
|
|
||||||
+ * @param args command arguments, with args[0] being the command name as string
|
|
||||||
+ * @return the property value, or an ErrorReturn with the error code
|
|
||||||
+ */
|
|
||||||
+static inline QVariant command(mpv_handle *ctx, const QVariant &args)
|
|
||||||
+{
|
|
||||||
+ node_builder node(args);
|
|
||||||
+ mpv_node res;
|
|
||||||
+ int err = mpv_command_node(ctx, node.node(), &res);
|
|
||||||
+ if (err < 0)
|
|
||||||
+ return QVariant::fromValue(ErrorReturn(err));
|
|
||||||
+ node_autofree f(&res);
|
|
||||||
+ return node_to_variant(&res);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+}
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+Q_DECLARE_METATYPE(mpv::qt::ErrorReturn)
|
|
||||||
+
|
|
||||||
+#endif /* else #if MPV_ENABLE_DEPRECATED */
|
|
||||||
+
|
|
||||||
+#endif
|
|
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:b7271b9f1324b56416708606d9ed69d695a862a1336276dc504a2333cb923e62
|
|
||||||
size 476034
|
|
3
qimgv-0.9.tar.gz
Normal file
3
qimgv-0.9.tar.gz
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:b994cdcaad269de6774a59ff01dbfdb4adf0994f974fc5756daf43aa9bfeab05
|
||||||
|
size 669848
|
25
qimgv-Qt512.patch
Normal file
25
qimgv-Qt512.patch
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
From a39d6086ceb9445d2c16943e0719096a99920bf8 Mon Sep 17 00:00:00 2001
|
||||||
|
From: easymodo <easymodofrf@gmail.com>
|
||||||
|
Date: Fri, 1 May 2020 04:20:44 +0300
|
||||||
|
Subject: [PATCH] fix build with qt < 5.14 #205
|
||||||
|
|
||||||
|
---
|
||||||
|
.../directorymanager/watchers/linux/linuxworker.cpp | 4 ++++
|
||||||
|
1 file changed, 4 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/qimgv/components/directorymanager/watchers/linux/linuxworker.cpp b/qimgv/components/directorymanager/watchers/linux/linuxworker.cpp
|
||||||
|
index 96ec9d3..e49cf40 100644
|
||||||
|
--- a/qimgv/components/directorymanager/watchers/linux/linuxworker.cpp
|
||||||
|
+++ b/qimgv/components/directorymanager/watchers/linux/linuxworker.cpp
|
||||||
|
@@ -21,7 +21,11 @@ void LinuxWorker::setDescriptor(int desc) {
|
||||||
|
|
||||||
|
void LinuxWorker::run() {
|
||||||
|
emit started();
|
||||||
|
+#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0)
|
||||||
|
+ isRunning.store(true);
|
||||||
|
+#else
|
||||||
|
isRunning.storeRelaxed(true);
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
if (fd == -1) {
|
||||||
|
qDebug() << TAG << "File descriptor isn't set! Stopping";
|
26
qimgv-includepath.patch
Normal file
26
qimgv-includepath.patch
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
Index: qimgv-0.9/qimgv/3rdparty/QtOpenCV/cvmatandqimage.cpp
|
||||||
|
===================================================================
|
||||||
|
--- qimgv-0.9.orig/qimgv/3rdparty/QtOpenCV/cvmatandqimage.cpp
|
||||||
|
+++ qimgv-0.9/qimgv/3rdparty/QtOpenCV/cvmatandqimage.cpp
|
||||||
|
@@ -28,7 +28,7 @@
|
||||||
|
#include <QSysInfo>
|
||||||
|
#include <QDebug>
|
||||||
|
#include <cstring>
|
||||||
|
-#include <opencv4/opencv2/imgproc.hpp>
|
||||||
|
+#include <opencv2/imgproc.hpp>
|
||||||
|
|
||||||
|
namespace QtOcv {
|
||||||
|
namespace {
|
||||||
|
Index: qimgv-0.9/qimgv/3rdparty/QtOpenCV/cvmatandqimage.h
|
||||||
|
===================================================================
|
||||||
|
--- qimgv-0.9.orig/qimgv/3rdparty/QtOpenCV/cvmatandqimage.h
|
||||||
|
+++ qimgv-0.9/qimgv/3rdparty/QtOpenCV/cvmatandqimage.h
|
||||||
|
@@ -27,7 +27,7 @@
|
||||||
|
#define CVMATANDQIMAGE_H
|
||||||
|
|
||||||
|
#include <QtGui/qimage.h>
|
||||||
|
-#include <opencv4/opencv2/core.hpp>
|
||||||
|
+#include <opencv2/core.hpp>
|
||||||
|
|
||||||
|
namespace QtOcv {
|
||||||
|
|
@ -1,7 +1,7 @@
|
|||||||
Index: qimgv-0.8.9/qimgv_libs/qimgv_player_mpv/CMakeLists.txt
|
Index: qimgv-0.9/qimgv_libs/qimgv_player_mpv/CMakeLists.txt
|
||||||
===================================================================
|
===================================================================
|
||||||
--- qimgv-0.8.9.orig/qimgv_libs/qimgv_player_mpv/CMakeLists.txt
|
--- qimgv-0.9.orig/qimgv_libs/qimgv_player_mpv/CMakeLists.txt
|
||||||
+++ qimgv-0.8.9/qimgv_libs/qimgv_player_mpv/CMakeLists.txt
|
+++ qimgv-0.9/qimgv_libs/qimgv_player_mpv/CMakeLists.txt
|
||||||
@@ -12,7 +12,7 @@ pkg_check_modules(Mpv REQUIRED IMPORTED_
|
@@ -12,7 +12,7 @@ pkg_check_modules(Mpv REQUIRED IMPORTED_
|
||||||
|
|
||||||
include(GNUInstallDirs)
|
include(GNUInstallDirs)
|
||||||
@ -10,9 +10,9 @@ Index: qimgv-0.8.9/qimgv_libs/qimgv_player_mpv/CMakeLists.txt
|
|||||||
+add_library(qimgv_player_mpv STATIC
|
+add_library(qimgv_player_mpv STATIC
|
||||||
src/videoplayer.cpp
|
src/videoplayer.cpp
|
||||||
src/mpvwidget.cpp
|
src/mpvwidget.cpp
|
||||||
src/videoplayermpv.cpp)
|
src/videoplayermpv.cpp
|
||||||
@@ -38,4 +38,3 @@ endif()
|
@@ -39,4 +39,3 @@ endif()
|
||||||
|
|
||||||
target_compile_definitions(qimgv_player_mpv PRIVATE QIMGV_PLAYER_MPV_LIBRARY)
|
target_compile_definitions(qimgv_player_mpv PRIVATE QIMGV_PLAYER_MPV_LIBRARY)
|
||||||
|
|
||||||
-install(TARGETS qimgv_player_mpv)
|
-install(TARGETS qimgv_player_mpv LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||||
|
@ -1,3 +1,29 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri May 1 07:05:43 UTC 2020 - Luigi Baldoni <aloisio@gmx.com>
|
||||||
|
|
||||||
|
- Update to version 0.9
|
||||||
|
What's new:
|
||||||
|
* Directory tree & bookmarks in folder view
|
||||||
|
* High quality scaling via OpenCV
|
||||||
|
* Reduced memory usage when viewing zoomed images
|
||||||
|
* Zoom level indicator
|
||||||
|
* Image centering options
|
||||||
|
* Slideshow mode (~ key)
|
||||||
|
* Show directory now highlights current file
|
||||||
|
* Improved touchpad support (see settings > controls)
|
||||||
|
* gif playback controls. Play / pause & frame step, similar to
|
||||||
|
video
|
||||||
|
* Crop panel now has save button. Shortcut is Shift+Enter
|
||||||
|
* Added an option to start into folder view
|
||||||
|
* Support for HEIF / HEIC image format
|
||||||
|
Bug fixes:
|
||||||
|
* Window state is now saved correctly
|
||||||
|
* Various UI fixes
|
||||||
|
* Possible crash fix in thumbnailer
|
||||||
|
- Refreshed qimgv-nosharedlib.patch
|
||||||
|
- Dropped mpv-qthelper.patch (merged upstream)
|
||||||
|
- Added qimgv-includepath.patch and qimgv-Qt512.patch
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Thu Mar 19 13:12:28 UTC 2020 - Luigi Baldoni <aloisio@gmx.com>
|
Thu Mar 19 13:12:28 UTC 2020 - Luigi Baldoni <aloisio@gmx.com>
|
||||||
|
|
||||||
|
11
qimgv.spec
11
qimgv.spec
@ -17,7 +17,7 @@
|
|||||||
|
|
||||||
|
|
||||||
Name: qimgv
|
Name: qimgv
|
||||||
Version: 0.8.9
|
Version: 0.9
|
||||||
Release: 0
|
Release: 0
|
||||||
Summary: Qt5 image viewer
|
Summary: Qt5 image viewer
|
||||||
License: GPL-3.0-only
|
License: GPL-3.0-only
|
||||||
@ -27,8 +27,10 @@ Source0: https://github.com/easymodo/qimgv/archive/v%{version}.tar.gz#/%{
|
|||||||
Patch0: qimgv-nosharedlib.patch
|
Patch0: qimgv-nosharedlib.patch
|
||||||
# PATCH-FEATURE-OPENSUSE qimgv-PIE.patch # aloisio@gmx.com add PIE flags
|
# PATCH-FEATURE-OPENSUSE qimgv-PIE.patch # aloisio@gmx.com add PIE flags
|
||||||
Patch1: qimgv-PIE.patch
|
Patch1: qimgv-PIE.patch
|
||||||
# PATCH-FIX-UPSTREAM mpv-qthelper.patch
|
# PATCH-FIX-OPENSUSE qimgv-includepath.patch # aloisio@gmx.com use correct path for opencv includes
|
||||||
Patch2: mpv-qthelper.patch
|
Patch2: qimgv-includepath.patch
|
||||||
|
# PATCH-FIX-UPSTREAM qimgv-Qt512.patch
|
||||||
|
Patch3: qimgv-Qt512.patch
|
||||||
BuildRequires: cmake >= 3.13
|
BuildRequires: cmake >= 3.13
|
||||||
%if 0%{?suse_version} > 1500
|
%if 0%{?suse_version} > 1500
|
||||||
BuildRequires: gcc-c++
|
BuildRequires: gcc-c++
|
||||||
@ -36,9 +38,10 @@ BuildRequires: gcc-c++
|
|||||||
BuildRequires: gcc8-c++
|
BuildRequires: gcc8-c++
|
||||||
%endif
|
%endif
|
||||||
BuildRequires: hicolor-icon-theme
|
BuildRequires: hicolor-icon-theme
|
||||||
|
BuildRequires: opencv-devel
|
||||||
BuildRequires: pkgconfig
|
BuildRequires: pkgconfig
|
||||||
BuildRequires: pkgconfig(Qt5Concurrent) >= 5.9
|
BuildRequires: pkgconfig(Qt5Concurrent) >= 5.9
|
||||||
BuildRequires: pkgconfig(Qt5Widgets) >= 5.9
|
BuildRequires: pkgconfig(Qt5Widgets)
|
||||||
BuildRequires: pkgconfig(exiv2)
|
BuildRequires: pkgconfig(exiv2)
|
||||||
BuildRequires: pkgconfig(mpv) >= 1.22.0
|
BuildRequires: pkgconfig(mpv) >= 1.22.0
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user