From 726681eb104507e8c62aa24cc015d1ebd00379db Mon Sep 17 00:00:00 2001 From: peijiankang Date: Wed, 24 Apr 2024 09:07:25 +0800 Subject: [PATCH] add 0011-15-kylin-video.patch --- 0011-15-kylin-video.patch | 210 ++++++++++++++++++++++++++++++++++++++ kylin-video.spec | 9 +- 2 files changed, 217 insertions(+), 2 deletions(-) create mode 100644 0011-15-kylin-video.patch diff --git a/0011-15-kylin-video.patch b/0011-15-kylin-video.patch new file mode 100644 index 0000000..2befd6b --- /dev/null +++ b/0011-15-kylin-video.patch @@ -0,0 +1,210 @@ +From: =?utf-8?b?5YiY6IGq?= +Date: Fri, 19 May 2023 09:16:59 +0000 +Subject: =?utf-8?q?!15_kylin-video_Merge_pull_request_!15_from_=E6=88=8E?= + =?utf-8?q?=E6=9C=89=E4=B8=BD/openkylin/yangtze?= + +--- + src/widget/eventpasswidget.cpp | 37 +++++++++++++++++++++++++++++++++++++ + src/widget/eventpasswidget.h | 5 ++++- + src/widget/playglwidget.cpp | 37 +++++++++++++++++++++++++++++++++++++ + src/widget/playglwidget.h | 5 ++++- + 4 files changed, 82 insertions(+), 2 deletions(-) + +diff --git a/src/widget/eventpasswidget.cpp b/src/widget/eventpasswidget.cpp +index ebe6f39..c74cc14 100644 +--- a/src/widget/eventpasswidget.cpp ++++ b/src/widget/eventpasswidget.cpp +@@ -95,6 +95,7 @@ void EventPassWidget::mousePressEvent(QMouseEvent *e) + + // 右键点击触发显示菜单 + if (e->button() == Qt::LeftButton) { ++ m_isMousePressed = true; + m_timePressStart = QDateTime::currentMSecsSinceEpoch(); + } + return QWidget::mousePressEvent(e); +@@ -102,6 +103,7 @@ void EventPassWidget::mousePressEvent(QMouseEvent *e) + + void EventPassWidget::mouseReleaseEvent(QMouseEvent *e) + { ++ m_isMousePressed = false; + // 左键离开触发暂停,如果左键按得时间很长就不触发了,不然会和触摸屏长按冲突 + if (e->button() == Qt::LeftButton && (QDateTime::currentMSecsSinceEpoch() - m_timePressStart) < 500) { + if (!m_mouseUsed) +@@ -115,6 +117,27 @@ void EventPassWidget::mouseReleaseEvent(QMouseEvent *e) + + void EventPassWidget::mouseMoveEvent(QMouseEvent *e) + { ++ if (m_isMousePressed) { ++ m_posCurrent = e->pos(); ++ ++ int xc = abs(m_posCurrent.x() - m_posLast.x()); ++ int yc = abs(m_posCurrent.y() - m_posLast.y()); ++ if (xc < yc) { ++ m_volumeChange = yc * 200 / height(); ++ //符合音量调节 ++ if (m_volumeChange > 0) { ++ if (m_posCurrent.y() - m_posLast.y() > 2) { ++ g_user_signal->setVolumeDown(m_volumeChange); ++ m_posLast = m_posCurrent; ++ } ++ else { ++ g_user_signal->setVolumeUp(m_volumeChange); ++ m_posLast = m_posCurrent; ++ } ++ } ++ } ++ } ++ + m_isMouseEnter = true; + m_checkMouseTimer->stop(); + setCursor(QCursor(Qt::ArrowCursor)); +@@ -135,6 +158,19 @@ void EventPassWidget::mouseDoubleClickEvent(QMouseEvent *e) + return QWidget::mouseDoubleClickEvent(e); + } + ++void EventPassWidget::wheelEvent(QWheelEvent *e) ++{ ++ // 鼠标滚轮和触控板双指滑动调节音量 ++ int wheel_distance = e->delta(); ++ if (abs(wheel_distance) / 120 == 1) { ++ if (wheel_distance > 0) ++ g_user_signal->setVolumeUp(5); ++ else ++ g_user_signal->setVolumeDown(5); ++ } ++ return QWidget::wheelEvent(e); ++} ++ + void EventPassWidget::enterEvent(QEvent *e) + { + m_isMouseEnter = true; +@@ -144,6 +180,7 @@ void EventPassWidget::enterEvent(QEvent *e) + void EventPassWidget::leaveEvent(QEvent *e) + { + m_isMouseEnter = false; ++ m_isMousePressed = false; + if(g_playstate > 0) + m_checkMouseTimer->start(); + +diff --git a/src/widget/eventpasswidget.h b/src/widget/eventpasswidget.h +index e1dfe6e..95bc7a2 100644 +--- a/src/widget/eventpasswidget.h ++++ b/src/widget/eventpasswidget.h +@@ -27,7 +27,9 @@ private: + + bool m_mouseUsed, + m_isMouseEnter, +- m_hasVideo; ++ m_dbClicked, ++ m_hasVideo, ++ m_isMousePressed = false; + + int m_volumeChange; + +@@ -46,6 +48,7 @@ protected: + void mouseReleaseEvent(QMouseEvent *e) override; + void mouseMoveEvent(QMouseEvent *e) override; + void mouseDoubleClickEvent(QMouseEvent *e) override; ++ void wheelEvent(QWheelEvent *e) override; + void enterEvent(QEvent *e) override; + void leaveEvent(QEvent *e) override; + bool event(QEvent *e) override; +diff --git a/src/widget/playglwidget.cpp b/src/widget/playglwidget.cpp +index d39a800..00533e0 100644 +--- a/src/widget/playglwidget.cpp ++++ b/src/widget/playglwidget.cpp +@@ -159,6 +159,7 @@ void PlayGLWidget::videIdChange(int vid) + + void PlayGLWidget::mousePressEvent(QMouseEvent *e) + { ++ m_isMousePressed = true; + m_mousePosPressed = e->pos(); + m_posStart = e->pos(); + m_posLast = e->pos(); +@@ -172,6 +173,7 @@ void PlayGLWidget::mousePressEvent(QMouseEvent *e) + + void PlayGLWidget::mouseReleaseEvent(QMouseEvent *e) + { ++ m_isMousePressed = false; + // 左键离开触发暂停,如果左键按得时间很长就不触发了,不然会和触摸屏长按冲突 + if (e->button() == Qt::LeftButton && (QDateTime::currentMSecsSinceEpoch() - m_timePressStart) < 500) { + if (!m_mouseUsed) +@@ -185,6 +187,27 @@ void PlayGLWidget::mouseReleaseEvent(QMouseEvent *e) + + void PlayGLWidget::mouseMoveEvent(QMouseEvent *e) + { ++ if (m_isMousePressed) { ++ m_posCurrent = e->pos(); ++ ++ int xc = abs(m_posCurrent.x() - m_posLast.x()); ++ int yc = abs(m_posCurrent.y() - m_posLast.y()); ++ if (xc < yc) { ++ m_volumeChange = yc * 200 / height(); ++ //符合音量调节 ++ if (m_volumeChange > 0) { ++ if (m_posCurrent.y() - m_posLast.y() > 2) { ++ g_user_signal->setVolumeDown(m_volumeChange); ++ m_posLast = m_posCurrent; ++ } ++ else { ++ g_user_signal->setVolumeUp(m_volumeChange); ++ m_posLast = m_posCurrent; ++ } ++ } ++ } ++ } ++ + m_isMouseEnter = true; + m_checkMouseTimer->stop(); + setCursor(QCursor(Qt::ArrowCursor)); +@@ -205,6 +228,19 @@ void PlayGLWidget::mouseDoubleClickEvent(QMouseEvent *e) + return QOpenGLWidget::mouseDoubleClickEvent(e); + } + ++void PlayGLWidget::wheelEvent(QWheelEvent *e) ++{ ++ // 鼠标滚轮和触控板双指滑动调节音量 ++ int wheel_distance = e->delta(); ++ if (abs(wheel_distance) / 120 == 1) { ++ if (wheel_distance > 0) ++ g_user_signal->setVolumeUp(5); ++ else ++ g_user_signal->setVolumeDown(5); ++ } ++ return QOpenGLWidget::wheelEvent(e); ++} ++ + void PlayGLWidget::enterEvent(QEvent *e) + { + m_isMouseEnter = true; +@@ -213,6 +249,7 @@ void PlayGLWidget::enterEvent(QEvent *e) + + void PlayGLWidget::leaveEvent(QEvent *e) + { ++ m_isMousePressed = false; + m_isMouseEnter = false; + if(g_playstate > 0) + m_checkMouseTimer->start(); +diff --git a/src/widget/playglwidget.h b/src/widget/playglwidget.h +index a82fac7..72498e9 100644 +--- a/src/widget/playglwidget.h ++++ b/src/widget/playglwidget.h +@@ -52,7 +52,9 @@ private: + + bool m_mouseUsed, + m_isMouseEnter, +- m_hasVideo; ++ m_dbClicked, ++ m_hasVideo, ++ m_isMousePressed = false; + + int m_volumeChange; + +@@ -71,6 +73,7 @@ protected: + void mouseReleaseEvent(QMouseEvent *e) override; + void mouseMoveEvent(QMouseEvent *e) override; + void mouseDoubleClickEvent(QMouseEvent *e) override; ++ void wheelEvent(QWheelEvent *e) override; + void enterEvent(QEvent *e) override; + void leaveEvent(QEvent *e) override; + bool event(QEvent *e) override; diff --git a/kylin-video.spec b/kylin-video.spec index 09de8e9..f2aecdb 100644 --- a/kylin-video.spec +++ b/kylin-video.spec @@ -1,6 +1,6 @@ Name: kylin-video Version: 3.1.4 -Release: 4 +Release: 5 Summary: A powerful video player License: GPL-2.0+ URL: https://gitee.com/openkylin/kylin-video @@ -8,6 +8,7 @@ Source0: kylin-video-3.1.4.tar.gz Patch01: 0001-fix-compile-error-of-kylin-video.patch Patch02: 0002-Repair-the-user-guide-does-not-work.patch Patch03: 0003-fix-build-error-of-kylin-video-about-ffmpeg-6.1.patch +Patch04: 0011-15-kylin-video.patch BuildRequires: ffmpeg-devel BuildRequires: libcrystalhd-devel @@ -43,12 +44,13 @@ It supports both x86 and ARM platform, and supports most of the audio and video %patch01 -p1 %patch02 -p1 %patch03 -p1 +%patch04 -p1 %build mkdir qmake-build pushd qmake-build %{qmake_qt5} .. -%{make_build} -j4 +%{make_build} popd %install @@ -65,6 +67,9 @@ popd %changelog +* Wed Apr 24 2024 peijiankang - 3.1.4-5 +- add 0011-15-kylin-video.patch + * Wed Apr 10 2024 peijiankang - 3.1.4-4 - add 0003-fix-build-error-of-kylin-video-about-ffmpeg-6.1.patch