Hello community, here is the log from the commit of package orion for openSUSE:Leap:15.2 checked in at 2020-04-14 14:22:35 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Leap:15.2/orion (Old) and /work/SRC/openSUSE:Leap:15.2/.orion.new.3248 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "orion" Tue Apr 14 14:22:35 2020 rev:19 rq:793737 version:1.6.7+git~20200218 Changes: -------- --- /work/SRC/openSUSE:Leap:15.2/orion/orion.changes 2020-01-15 15:37:36.587035383 +0100 +++ /work/SRC/openSUSE:Leap:15.2/.orion.new.3248/orion.changes 2020-04-14 14:24:17.985423105 +0200 @@ -2 +2,119 @@ -Sun Mar 11 13:58:00 UTC 2018 - opensuse-packag...@opensuse.org +Mon Mar 23 20:18:46 UTC 2020 - Christophe Giboudeaux <christo...@krop.fr> + +- Add patch to fix build with recent mpv versions: + * 0001-Add-a-local-qthelper.hpp-copy.patch (gh#alamminsalo/orion/296) +- Spec cleanup +- Remove obsolete post macros. +- Remove obsolete sed calls. + +------------------------------------------------------------------- +Tue Feb 25 16:35:20 UTC 2020 - pousadua...@gmail.com + +- Update to version 1.6.7+git~20200218: + * loadAndPlay: log message for no streamMap early exit; if Settings.quality is not available try source; don't try to play an empty URL, log an error instead (#293) + * Workaround for chat not working when emotes are not initialized in the chat frontend (#294) + +------------------------------------------------------------------- +Fri Jan 31 08:53:22 UTC 2020 - pousadua...@gmail.com + +- Update to version 1.6.7+git~20200130: + * Ongoing travis fix PR (#291) + +------------------------------------------------------------------- +Fri Jan 03 09:04:04 UTC 2020 - pousadua...@gmail.com + +- Update to version 1.6.6+git~20191230: + * access through twitch api key (#287) + +------------------------------------------------------------------- +Sun Jul 14 14:51:11 UTC 2019 - pousadua...@gmail.com + +- Update to version 1.6.6+git~20190714: + * chat users list: add broadcaster and vips sections to predefined groups order; show any unrecognized groups added in the future after moderators. (#280) + +------------------------------------------------------------------- +Mon Apr 15 11:50:13 UTC 2019 - pousadua...@gmail.com + +- Update to version 1.6.6+git~20190328: + * Fix HTTP request socket output (#272) + +------------------------------------------------------------------- +Mon Feb 04 19:31:37 UTC 2019 - pousadua...@gmail.com + +- Update to version 1.6.6+git~20190202: + * Fix HiDPI using QT_AUTO_SCREEN_SCALE_FACTOR (#269) + +------------------------------------------------------------------- +Tue Nov 20 13:54:05 UTC 2018 - pousadua...@gmail.com + +- Update to version 1.6.6+git~20181119: + * adjusted font sizes + * fix travis linux build + * make views swipeable + * minor ux fixes, allow chat on top edge + * topbar hiding at screen edge + * responsive grid tooltips, remove 'open chat' + * store window position + * imageprovider: fix a mem leak + * vod: properly save position on shutdown + * allow debug option on windows + * chat ux, readable colors, focus, multiline comments etc. + * responsive scrolling and scrollbar + * better url detection + * remove apptray, add follow confirmation + * refactor settings, choose player settings at runtime + +------------------------------------------------------------------- +Sun Nov 04 20:17:11 UTC 2018 - pousadua...@gmail.com + +- Update to version 1.6.6+git~20181103: + * [travis] add linux appimage and android apk (#258) + +------------------------------------------------------------------- +Wed Oct 17 19:52:18 UTC 2018 - pousadua...@gmail.com + +- Update to version 1.6.6+git~20181016: + * Custom install prefix (#256) + +------------------------------------------------------------------- +Mon Oct 15 20:18:20 UTC 2018 - pousadua...@gmail.com + +- Update to version 1.6.6+git~20181015: + * Seek preview (#252) + * appveyor compile openssl, mpv (#250) + +------------------------------------------------------------------- +Sun Oct 07 19:43:27 UTC 2018 - pousadua...@gmail.com + +- Update to version 1.6.5+git~20181007: + * version 1.6.6 + * fix header visibility while mouseover player + * add player hotkeys + * improve player ui + * fix some player ui glitches + * add channel name to header when playing vod + * fix vod reload seeking to correct position + * fix QtAV buffering status and seeking at start + * fix mpv player position update + * replace spacer with vod time label + * add option for hardware acceleration + * add option for opengl backend + * add option for multiple instances + * fix wrong usage of beginRemoveRows + +------------------------------------------------------------------- +Sat Oct 06 23:18:48 UTC 2018 - pousadua...@gmail.com + +- Update to version 1.6.5+git~20181005: + * enable android topbar hiding feature on desktop + * fix appveyor (#245) + * add example image of color mod + +------------------------------------------------------------------- +Tue May 29 10:31:16 UTC 2018 - opensuse-packag...@opensuse.org + +- Update to version 1.6.5+git~20180524: + * Desktop file improvements (#237) + +------------------------------------------------------------------- +Sun Mar 11 13:58:00 UTC 2018 - pousadua...@gmail.com Old: ---- orion-1.6.5+git~20180311.tar.xz New: ---- 0001-Add-a-local-qthelper.hpp-copy.patch orion-1.6.7+git~20200218.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ orion.spec ++++++ --- /var/tmp/diff_new_pack.vHW8vg/_old 2020-04-14 14:24:18.329423361 +0200 +++ /var/tmp/diff_new_pack.vHW8vg/_new 2020-04-14 14:24:18.333423364 +0200 @@ -1,7 +1,7 @@ # # spec file for package orion # -# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2020 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -12,39 +12,33 @@ # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. -# Please submit bugfixes or comments via http://bugs.opensuse.org/ +# Please submit bugfixes or comments via https://bugs.opensuse.org/ # Name: orion -Version: 1.6.5+git~20180311 +Version: 1.6.7+git~20200218 Release: 0 Summary: Twitch stream client using Qt License: GPL-3.0-only -Url: http://alamminsalo.github.io/orion/ +Group: Productivity/Multimedia/Video/Players +URL: https://alamminsalo.github.io/orion/ Source: %{name}-%{version}.tar.xz - +# PATCH-FIX-UPSTREAM +Patch0: 0001-Add-a-local-qthelper.hpp-copy.patch BuildRequires: gcc - +BuildRequires: pkgconfig BuildRequires: pkgconfig(Qt5Core) >= 5.6 BuildRequires: pkgconfig(Qt5DBus) >= 5.6 BuildRequires: pkgconfig(Qt5OpenGL) >= 5.6 BuildRequires: pkgconfig(Qt5Quick) >= 5.6 BuildRequires: pkgconfig(Qt5QuickControls2) >= 5.6 BuildRequires: pkgconfig(Qt5Svg) >= 5.6 - BuildRequires: pkgconfig(mpv) - #Required for working gui Requires: libqt5-qtgraphicaleffects Requires: libqt5-qtquickcontrols Requires: libqt5-qtquickcontrols2 - -Requires(post): hicolor-icon-theme -Requires(postun): hicolor-icon-theme -Requires(post): update-desktop-files -Requires(postun): update-desktop-files - Recommends: gstreamer-plugins-libav %description @@ -52,39 +46,27 @@ %prep %setup -q +%patch0 -p1 #enforce package versioning in GUI sed -i 's|v$$VERSION|v%{version}-%{release}|g' orion.pro -#fix paths -sed -i 's|path = /usr/local/share/|path = /usr/share/|g' orion.pro -#fix categories in .desktop file -sed -i 's|Categories=Game|Categories=Network;FileTransfer;|g' distfiles/Orion.desktop %build -qmake-qt5 QMAKE_CFLAGS+="%optflags" QMAKE_CXXFLAGS+="%optflags" QMAKE_STRIP="/bin/true" -make %{?_smp_mflags} - -%post -%desktop_database_post -%icon_theme_cache_post - -%postun -%desktop_database_postun -%icon_theme_cache_postun +%qmake5 +%make_jobs %install -make install INSTALL_ROOT="%buildroot" - -mkdir -p %{buildroot}%{_datadir}/icons/hicolor/scalable/apps -mv %{buildroot}%{_datadir}/icons/%{name}.svg %{buildroot}%{_datadir}/icons/hicolor/scalable/apps/ +%qmake5_install %files -%defattr(-,root,root) %doc README.md %license COPYING LICENSE.txt - %attr(755,root,root) %{_bindir}/%{name} %{_datadir}/applications/Orion.desktop +%dir %{_datadir}/icons/hicolor +%dir %{_datadir}/icons/hicolor/scalable +%dir %{_datadir}/icons/hicolor/scalable/apps %{_datadir}/icons/hicolor/scalable/apps/%{name}.svg +%{_datadir}/metainfo/Orion.appdata.xml %changelog ++++++ 0001-Add-a-local-qthelper.hpp-copy.patch ++++++ >From cbc0c2fcc2307fd2a3d19f76defe01adaed470bc Mon Sep 17 00:00:00 2001 From: Christophe Giboudeaux <christo...@krop.fr> Date: Mon, 23 Mar 2020 21:17:46 +0100 Subject: [PATCH] Add a local qthelper.hpp copy. mpv 0.33 doesn't ship this file anymore. --- src/player/mpvobject.h | 2 +- src/player/qthelper.hpp | 386 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 387 insertions(+), 1 deletion(-) create mode 100644 src/player/qthelper.hpp diff --git a/src/player/mpvobject.h b/src/player/mpvobject.h index eeaa250..23a1ad0 100644 --- a/src/player/mpvobject.h +++ b/src/player/mpvobject.h @@ -21,7 +21,7 @@ typedef mpv_opengl_cb_context mpv_context; typedef mpv_render_context mpv_context; #endif -#include <mpv/qthelper.hpp> +#include "qthelper.hpp" class MpvRenderer; diff --git a/src/player/qthelper.hpp b/src/player/qthelper.hpp new file mode 100644 index 0000000..3af86e3 --- /dev/null +++ b/src/player/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 -- 2.25.1 ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.vHW8vg/_old 2020-04-14 14:24:18.381423399 +0200 +++ /var/tmp/diff_new_pack.vHW8vg/_new 2020-04-14 14:24:18.385423403 +0200 @@ -1,4 +1,4 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/alamminsalo/orion.git</param> - <param name="changesrevision">da84aed545aef432320cba99af11ca233cf43f40</param></service></servicedata> \ No newline at end of file + <param name="changesrevision">cbc0c2fcc2307fd2a3d19f76defe01adaed470bc</param></service></servicedata> \ No newline at end of file ++++++ orion-1.6.5+git~20180311.tar.xz -> orion-1.6.7+git~20200218.tar.xz ++++++ ++++ 8686 lines of diff (skipped)