gnu: libjami: Update to 20220726.1515.da8d1da.
* gnu/packages/patches/jami-fix-crash-on-quit.patch: Delete file. * gnu/packages/patches/jami-images-loading.patch: Likewise. * gnu/packages/patches/jami-libclient-audio-managers.patch: Likewise. * gnu/packages/patches/jami-memory-usage.patch: Likewise. * gnu/local.mk (dist_patch_DATA): De-register removed patches. * gnu/packages/jami.scm (%jami-version): Update to 20220726.1515.da8d1da. (libjami)[configure-flags]: Add '--disable-static'. (jami-apply-custom-patches): Adjust for top directory renaming. (%ffmpeg-default-configure-flags): Add muxer support for g726 and g726le. Add demuxer support for g723_1, g726 and g726le. Add encoder/decoder support for g726, g726le and g723_1. Add decoder support for g729. (ffmpeg-jami)[patches]: Add 'libopusenc-reload-packet-loss-at-encode'. (jami-libclient)[native-inputs]: New field. [inputs]: Add ffmpeg-jami and libxkbcommon. [propagated-inputs]: Replace qtbase-5 with qtbase.
This commit is contained in:
		
							parent
							
								
									1f466ed6be
								
							
						
					
					
						commit
						bdf0fce88e
					
				
					 6 changed files with 29 additions and 302 deletions
				
			
		| 
						 | 
					@ -1307,10 +1307,6 @@ dist_patch_DATA =						\
 | 
				
			||||||
  %D%/packages/patches/json-c-0.13-CVE-2020-12762.patch	\
 | 
					  %D%/packages/patches/json-c-0.13-CVE-2020-12762.patch	\
 | 
				
			||||||
  %D%/packages/patches/json-c-0.12-CVE-2020-12762.patch	\
 | 
					  %D%/packages/patches/json-c-0.12-CVE-2020-12762.patch	\
 | 
				
			||||||
  %D%/packages/patches/jsoncpp-pkg-config-version.patch		\
 | 
					  %D%/packages/patches/jsoncpp-pkg-config-version.patch		\
 | 
				
			||||||
  %D%/packages/patches/jami-fix-crash-on-quit.patch		\
 | 
					 | 
				
			||||||
  %D%/packages/patches/jami-images-loading.patch		\
 | 
					 | 
				
			||||||
  %D%/packages/patches/jami-memory-usage.patch			\
 | 
					 | 
				
			||||||
  %D%/packages/patches/jami-libclient-audio-managers.patch	\
 | 
					 | 
				
			||||||
  %D%/packages/patches/jamvm-1.5.1-aarch64-support.patch	\
 | 
					  %D%/packages/patches/jamvm-1.5.1-aarch64-support.patch	\
 | 
				
			||||||
  %D%/packages/patches/jamvm-1.5.1-armv7-support.patch	\
 | 
					  %D%/packages/patches/jamvm-1.5.1-armv7-support.patch	\
 | 
				
			||||||
  %D%/packages/patches/jamvm-2.0.0-aarch64-support.patch	\
 | 
					  %D%/packages/patches/jamvm-2.0.0-aarch64-support.patch	\
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -51,7 +51,9 @@
 | 
				
			||||||
  #:use-module (gnu packages upnp)
 | 
					  #:use-module (gnu packages upnp)
 | 
				
			||||||
  #:use-module (gnu packages version-control)
 | 
					  #:use-module (gnu packages version-control)
 | 
				
			||||||
  #:use-module (gnu packages video)
 | 
					  #:use-module (gnu packages video)
 | 
				
			||||||
 | 
					  #:use-module (gnu packages vulkan)
 | 
				
			||||||
  #:use-module (gnu packages webkit)
 | 
					  #:use-module (gnu packages webkit)
 | 
				
			||||||
 | 
					  #:use-module (gnu packages xdisorg)
 | 
				
			||||||
  #:use-module (gnu packages xiph)
 | 
					  #:use-module (gnu packages xiph)
 | 
				
			||||||
  #:use-module (gnu packages xorg)
 | 
					  #:use-module (gnu packages xorg)
 | 
				
			||||||
  #:use-module (gnu packages)
 | 
					  #:use-module (gnu packages)
 | 
				
			||||||
| 
						 | 
					@ -64,7 +66,7 @@
 | 
				
			||||||
  #:use-module (guix packages)
 | 
					  #:use-module (guix packages)
 | 
				
			||||||
  #:use-module (guix utils))
 | 
					  #:use-module (guix utils))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define %jami-version "20211223.2.37be4c3")
 | 
					(define %jami-version "20220726.1515.da8d1da")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define %jami-sources
 | 
					(define %jami-sources
 | 
				
			||||||
  ;; Return an origin object of the tarball release sources archive of the
 | 
					  ;; Return an origin object of the tarball release sources archive of the
 | 
				
			||||||
| 
						 | 
					@ -85,14 +87,10 @@
 | 
				
			||||||
        (for-each delete-file-recursively '("client-android"
 | 
					        (for-each delete-file-recursively '("client-android"
 | 
				
			||||||
                                            "client-ios"
 | 
					                                            "client-ios"
 | 
				
			||||||
                                            "client-macosx"
 | 
					                                            "client-macosx"
 | 
				
			||||||
                                            "client-uwp"))))
 | 
					                                            "plugins"))))
 | 
				
			||||||
    (patches (search-patches "jami-libclient-audio-managers.patch"
 | 
					 | 
				
			||||||
                             "jami-fix-crash-on-quit.patch"
 | 
					 | 
				
			||||||
                             "jami-images-loading.patch"
 | 
					 | 
				
			||||||
                             "jami-memory-usage.patch"))
 | 
					 | 
				
			||||||
    (sha256
 | 
					    (sha256
 | 
				
			||||||
     (base32
 | 
					     (base32
 | 
				
			||||||
      "12h4a0nj3gh05w64gkywrrb64agrhn6y3q4b9cqnhvr1vdkzlj0h"))))
 | 
					      "1zx0i9aw8jsba3bjc5r4pkkybm8c0lyz420ciq89vsswd48gfdhg"))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
;; Jami maintains a set of patches for some key dependencies (currently
 | 
					;; Jami maintains a set of patches for some key dependencies (currently
 | 
				
			||||||
;; pjproject and ffmpeg) of Jami that haven't yet been integrated upstream.
 | 
					;; pjproject and ffmpeg) of Jami that haven't yet been integrated upstream.
 | 
				
			||||||
| 
						 | 
					@ -104,7 +102,7 @@
 | 
				
			||||||
        (invoke "tar" "-xvf" #$%jami-sources
 | 
					        (invoke "tar" "-xvf" #$%jami-sources
 | 
				
			||||||
                "-C" patches-directory
 | 
					                "-C" patches-directory
 | 
				
			||||||
                "--strip-components=5"
 | 
					                "--strip-components=5"
 | 
				
			||||||
                (string-append "ring-project/daemon/contrib/src/"
 | 
					                (string-append "jami-project/daemon/contrib/src/"
 | 
				
			||||||
                               dep-name))
 | 
					                               dep-name))
 | 
				
			||||||
        (for-each
 | 
					        (for-each
 | 
				
			||||||
         (lambda (file)
 | 
					         (lambda (file)
 | 
				
			||||||
| 
						 | 
					@ -178,6 +176,8 @@
 | 
				
			||||||
    "--disable-muxers"
 | 
					    "--disable-muxers"
 | 
				
			||||||
    "--enable-muxer=rtp"
 | 
					    "--enable-muxer=rtp"
 | 
				
			||||||
    "--enable-muxer=g722"
 | 
					    "--enable-muxer=g722"
 | 
				
			||||||
 | 
					    "--enable-muxer=g726"
 | 
				
			||||||
 | 
					    "--enable-muxer=g726le"
 | 
				
			||||||
    "--enable-muxer=h263"
 | 
					    "--enable-muxer=h263"
 | 
				
			||||||
    "--enable-muxer=h264"
 | 
					    "--enable-muxer=h264"
 | 
				
			||||||
    "--enable-muxer=hevc"
 | 
					    "--enable-muxer=hevc"
 | 
				
			||||||
| 
						 | 
					@ -202,6 +202,9 @@
 | 
				
			||||||
    "--enable-demuxer=wav"
 | 
					    "--enable-demuxer=wav"
 | 
				
			||||||
    "--enable-demuxer=ac3"
 | 
					    "--enable-demuxer=ac3"
 | 
				
			||||||
    "--enable-demuxer=g722"
 | 
					    "--enable-demuxer=g722"
 | 
				
			||||||
 | 
					    "--enable-demuxer=g723_1"
 | 
				
			||||||
 | 
					    "--enable-demuxer=g726"
 | 
				
			||||||
 | 
					    "--enable-demuxer=g726le"
 | 
				
			||||||
    "--enable-demuxer=pcm_mulaw"
 | 
					    "--enable-demuxer=pcm_mulaw"
 | 
				
			||||||
    "--enable-demuxer=pcm_alaw"
 | 
					    "--enable-demuxer=pcm_alaw"
 | 
				
			||||||
    "--enable-demuxer=pcm_s16be"
 | 
					    "--enable-demuxer=pcm_s16be"
 | 
				
			||||||
| 
						 | 
					@ -222,6 +225,13 @@
 | 
				
			||||||
    ;; Encoders/decoders.
 | 
					    ;; Encoders/decoders.
 | 
				
			||||||
    "--enable-encoder=adpcm_g722"
 | 
					    "--enable-encoder=adpcm_g722"
 | 
				
			||||||
    "--enable-decoder=adpcm_g722"
 | 
					    "--enable-decoder=adpcm_g722"
 | 
				
			||||||
 | 
					    "--enable-encoder=adpcm_g726"
 | 
				
			||||||
 | 
					    "--enable-decoder=adpcm_g726"
 | 
				
			||||||
 | 
					    "--enable-encoder=adpcm_g726le"
 | 
				
			||||||
 | 
					    "--enable-decoder=adpcm_g726le"
 | 
				
			||||||
 | 
					    "--enable-decoder=g729"
 | 
				
			||||||
 | 
					    "--enable-encoder=g723_1"
 | 
				
			||||||
 | 
					    "--enable-decoder=g723_1"
 | 
				
			||||||
    "--enable-encoder=rawvideo"
 | 
					    "--enable-encoder=rawvideo"
 | 
				
			||||||
    "--enable-decoder=rawvideo"
 | 
					    "--enable-decoder=rawvideo"
 | 
				
			||||||
    "--enable-encoder=libx264"
 | 
					    "--enable-encoder=libx264"
 | 
				
			||||||
| 
						 | 
					@ -387,7 +397,7 @@
 | 
				
			||||||
                             "change-RTCP-ratio"
 | 
					                             "change-RTCP-ratio"
 | 
				
			||||||
                             "rtp_ext_abs_send_time"
 | 
					                             "rtp_ext_abs_send_time"
 | 
				
			||||||
                             "libopusdec-enable-FEC"
 | 
					                             "libopusdec-enable-FEC"
 | 
				
			||||||
                             "libopusenc-enable-FEC"
 | 
					                             "libopusenc-reload-packet-loss-at-encode"
 | 
				
			||||||
                             "screen-sharing-x11-fix"))))))))))
 | 
					                             "screen-sharing-x11-fix"))))))))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define-public libjami
 | 
					(define-public libjami
 | 
				
			||||||
| 
						 | 
					@ -405,12 +415,13 @@
 | 
				
			||||||
      #:tests? #f
 | 
					      #:tests? #f
 | 
				
			||||||
      ;; The agent links the daemon binary with libguile, which enables the
 | 
					      ;; The agent links the daemon binary with libguile, which enables the
 | 
				
			||||||
      ;; execution of test plans described in Scheme.  It may be useful in
 | 
					      ;; execution of test plans described in Scheme.  It may be useful in
 | 
				
			||||||
      ;; user scripts too, until more generalized Scheme bindings are made
 | 
					      ;; user scripts too, until more general purpose Scheme bindings are made
 | 
				
			||||||
      ;; (see: test/agent/README.md).
 | 
					      ;; available (see: test/agent/README.md).
 | 
				
			||||||
      ;; FIXME: Fails to link when building libjami as a shared library:
 | 
					      #:configure-flags #~(list "--disable-agent"
 | 
				
			||||||
      ;; bindings.cpp:(.text+0x24): undefined reference to `jami::Logger::log
 | 
					                                "--enable-debug"
 | 
				
			||||||
      ;; [...].
 | 
					                                ;; Disable static libraries to avoid
 | 
				
			||||||
      #:configure-flags #~(list "--disable-agent" "--enable-debug")
 | 
					                                ;; installing a 98 MiB archive.
 | 
				
			||||||
 | 
					                                "--disable-static")
 | 
				
			||||||
      #:make-flags #~(list "V=1")       ;build verbosely
 | 
					      #:make-flags #~(list "V=1")       ;build verbosely
 | 
				
			||||||
      #:phases
 | 
					      #:phases
 | 
				
			||||||
      #~(modify-phases %standard-phases
 | 
					      #~(modify-phases %standard-phases
 | 
				
			||||||
| 
						 | 
					@ -489,10 +500,9 @@ protocols, as well as decentralized calling using P2P-DHT.")
 | 
				
			||||||
            (lambda _
 | 
					            (lambda _
 | 
				
			||||||
              ;; Allow building from the tarball or a git checkout.
 | 
					              ;; Allow building from the tarball or a git checkout.
 | 
				
			||||||
              (false-if-exception (chdir "lrc")))))))
 | 
					              (false-if-exception (chdir "lrc")))))))
 | 
				
			||||||
    (inputs
 | 
					    (native-inputs (list qttools vulkan-headers))
 | 
				
			||||||
     (list libjami network-manager))
 | 
					    (inputs (list ffmpeg-jami libjami libxkbcommon network-manager))
 | 
				
			||||||
    (propagated-inputs
 | 
					    (propagated-inputs (list qtbase)) ;qt included in several installed headers
 | 
				
			||||||
     (list qtbase-5))             ;Qt is included in several installed headers
 | 
					 | 
				
			||||||
    (synopsis "Jami client library")
 | 
					    (synopsis "Jami client library")
 | 
				
			||||||
    (description "This package provides a library common to all Jami clients.
 | 
					    (description "This package provides a library common to all Jami clients.
 | 
				
			||||||
Jami is a secure and distributed voice, video and chat communication platform
 | 
					Jami is a secure and distributed voice, video and chat communication platform
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,34 +0,0 @@
 | 
				
			||||||
Retrieved from:
 | 
					 | 
				
			||||||
https://git.jami.net/savoirfairelinux/jami-client-qt/-/commit/83f68573324a453a6d26e025fd6439f175a79d1b.diff.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
With the 'client-qt' prefix added to match the file hierarchy of the release tarball.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
diff --git a/client-qt/src/mainapplication.cpp b/client-qt/src/mainapplication.cpp
 | 
					 | 
				
			||||||
index 0c3209fc6fa7c528bec197f1cf9332758170441c..278f19287b86dd2c916935ab0930cbe0abb35d26 100644
 | 
					 | 
				
			||||||
--- a/client-qt/src/mainapplication.cpp
 | 
					 | 
				
			||||||
+++ b/client-qt/src/mainapplication.cpp
 | 
					 | 
				
			||||||
@@ -155,7 +155,11 @@ MainApplication::MainApplication(int& argc, char** argv)
 | 
					 | 
				
			||||||
     QObject::connect(this, &QApplication::aboutToQuit, [this] { cleanup(); });
 | 
					 | 
				
			||||||
 }
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
-MainApplication::~MainApplication() {}
 | 
					 | 
				
			||||||
+MainApplication::~MainApplication()
 | 
					 | 
				
			||||||
+{
 | 
					 | 
				
			||||||
+    engine_.reset();
 | 
					 | 
				
			||||||
+    lrcInstance_.reset();
 | 
					 | 
				
			||||||
+}
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 bool
 | 
					 | 
				
			||||||
 MainApplication::init()
 | 
					 | 
				
			||||||
diff --git a/src/mainapplication.h b/src/mainapplication.h
 | 
					 | 
				
			||||||
index 51306be829478b9fbc1c61a08aeb96938be26dac..4047e3abb3cfd3e6250387a37fa5a896e9bc4161 100644
 | 
					 | 
				
			||||||
--- a/client-qt/src/mainapplication.h
 | 
					 | 
				
			||||||
+++ b/client-qt/src/mainapplication.h
 | 
					 | 
				
			||||||
@@ -80,7 +80,6 @@ private:
 | 
					 | 
				
			||||||
 private:
 | 
					 | 
				
			||||||
     QScopedPointer<QFile> debugFile_;
 | 
					 | 
				
			||||||
     QScopedPointer<QQmlApplicationEngine> engine_;
 | 
					 | 
				
			||||||
-
 | 
					 | 
				
			||||||
     QScopedPointer<LRCInstance> lrcInstance_;
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
     QScopedPointer<ConnectivityMonitor> connectivityMonitor_;
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,152 +0,0 @@
 | 
				
			||||||
From be9dd0d0d8cb4556cd930edd783c0a1699565ac0 Mon Sep 17 00:00:00 2001
 | 
					 | 
				
			||||||
From: kkostiuk <kateryna.kostiuk@savoirfairelinux.com>
 | 
					 | 
				
			||||||
Date: Mon, 1 Nov 2021 17:39:23 -0400
 | 
					 | 
				
			||||||
Subject: [PATCH] conversation: fix long loading time for images
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Change-Id: Id88cfbd571f4b504f258758bd13b4e4a91bf1b49
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 .../DataTransferMessageDelegate.qml           | 52 +++++++++++++++++--
 | 
					 | 
				
			||||||
 src/messagesadapter.cpp                       | 20 +++++--
 | 
					 | 
				
			||||||
 src/messagesadapter.h                         |  2 +-
 | 
					 | 
				
			||||||
 3 files changed, 66 insertions(+), 8 deletions(-)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
diff --git a/client-qt/src/commoncomponents/DataTransferMessageDelegate.qml b/client-qt/src/commoncomponents/DataTransferMessageDelegate.qml
 | 
					 | 
				
			||||||
index 7875e01..2e7dcc0 100644
 | 
					 | 
				
			||||||
--- a/client-qt/src/commoncomponents/DataTransferMessageDelegate.qml
 | 
					 | 
				
			||||||
+++ b/client-qt/src/commoncomponents/DataTransferMessageDelegate.qml
 | 
					 | 
				
			||||||
@@ -252,10 +252,11 @@ Loader {
 | 
					 | 
				
			||||||
                 Loader {
 | 
					 | 
				
			||||||
                     id: localMediaCompLoader
 | 
					 | 
				
			||||||
                     anchors.right: isOutgoing ? parent.right : undefined
 | 
					 | 
				
			||||||
+                    asynchronous: true
 | 
					 | 
				
			||||||
                     width: sourceComponent.width
 | 
					 | 
				
			||||||
                     height: sourceComponent.height
 | 
					 | 
				
			||||||
                     sourceComponent: mediaInfo.isImage !== undefined ?
 | 
					 | 
				
			||||||
-                                         imageComp :
 | 
					 | 
				
			||||||
+                                         imageComp : mediaInfo.isAnimatedImage !== undefined ? animatedImageComp :
 | 
					 | 
				
			||||||
                                          avComp
 | 
					 | 
				
			||||||
                     Component {
 | 
					 | 
				
			||||||
                         id: avComp
 | 
					 | 
				
			||||||
@@ -302,9 +303,9 @@ Loader {
 | 
					 | 
				
			||||||
                         }
 | 
					 | 
				
			||||||
                     }
 | 
					 | 
				
			||||||
                     Component {
 | 
					 | 
				
			||||||
-                        id: imageComp
 | 
					 | 
				
			||||||
+                        id: animatedImageComp
 | 
					 | 
				
			||||||
                         AnimatedImage {
 | 
					 | 
				
			||||||
-                            id: img
 | 
					 | 
				
			||||||
+                            id: animatedImg
 | 
					 | 
				
			||||||
                             anchors.right: isOutgoing ? parent.right : undefined
 | 
					 | 
				
			||||||
                             property real minSize: 192
 | 
					 | 
				
			||||||
                             property real maxSize: 256
 | 
					 | 
				
			||||||
@@ -327,6 +328,51 @@ Loader {
 | 
					 | 
				
			||||||
                                 anchors.fill: parent
 | 
					 | 
				
			||||||
                             }
 | 
					 | 
				
			||||||
                             layer.enabled: true
 | 
					 | 
				
			||||||
+                            layer.effect: OpacityMask {
 | 
					 | 
				
			||||||
+                                maskSource: MessageBubble {
 | 
					 | 
				
			||||||
+                                    out: isOutgoing
 | 
					 | 
				
			||||||
+                                    type: seq
 | 
					 | 
				
			||||||
+                                    width: animatedImg.width
 | 
					 | 
				
			||||||
+                                    height: animatedImg.height
 | 
					 | 
				
			||||||
+                                    radius: msgRadius
 | 
					 | 
				
			||||||
+                                }
 | 
					 | 
				
			||||||
+                            }
 | 
					 | 
				
			||||||
+                            HoverHandler {
 | 
					 | 
				
			||||||
+                                target : parent
 | 
					 | 
				
			||||||
+                                onHoveredChanged: {
 | 
					 | 
				
			||||||
+                                    localMediaMsgItem.hoveredLink = hovered ? animatedImg.source : ""
 | 
					 | 
				
			||||||
+                                }
 | 
					 | 
				
			||||||
+                                cursorShape: Qt.PointingHandCursor
 | 
					 | 
				
			||||||
+                            }
 | 
					 | 
				
			||||||
+                        }
 | 
					 | 
				
			||||||
+                    }
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+                    Component {
 | 
					 | 
				
			||||||
+                        id: imageComp
 | 
					 | 
				
			||||||
+                        Image {
 | 
					 | 
				
			||||||
+                            id: img
 | 
					 | 
				
			||||||
+                            anchors.right: isOutgoing ? parent.right : undefined
 | 
					 | 
				
			||||||
+                            property real minSize: 192
 | 
					 | 
				
			||||||
+                            property real maxSize: 256
 | 
					 | 
				
			||||||
+                            cache: true
 | 
					 | 
				
			||||||
+                            fillMode: Image.PreserveAspectCrop
 | 
					 | 
				
			||||||
+                            mipmap: true
 | 
					 | 
				
			||||||
+                            antialiasing: true
 | 
					 | 
				
			||||||
+                            autoTransform: false
 | 
					 | 
				
			||||||
+                            asynchronous: true
 | 
					 | 
				
			||||||
+                            source: "file:///" + Body
 | 
					 | 
				
			||||||
+                            property real aspectRatio: implicitWidth / implicitHeight
 | 
					 | 
				
			||||||
+                            property real adjustedWidth: Math.min(maxSize,
 | 
					 | 
				
			||||||
+                                                                  Math.max(minSize,
 | 
					 | 
				
			||||||
+                                                                           innerContent.width - senderMargin))
 | 
					 | 
				
			||||||
+                            width: adjustedWidth
 | 
					 | 
				
			||||||
+                            height: Math.ceil(adjustedWidth / aspectRatio)
 | 
					 | 
				
			||||||
+                            Rectangle {
 | 
					 | 
				
			||||||
+                                color: JamiTheme.previewImageBackgroundColor
 | 
					 | 
				
			||||||
+                                z: -1
 | 
					 | 
				
			||||||
+                                anchors.fill: parent
 | 
					 | 
				
			||||||
+                            }
 | 
					 | 
				
			||||||
+                            layer.enabled: true
 | 
					 | 
				
			||||||
                             layer.effect: OpacityMask {
 | 
					 | 
				
			||||||
                                 maskSource: MessageBubble {
 | 
					 | 
				
			||||||
                                     out: isOutgoing
 | 
					 | 
				
			||||||
diff --git a/client-qt/src/messagesadapter.cpp b/client-qt/src/messagesadapter.cpp
 | 
					 | 
				
			||||||
index 91f8eed..ba38e53 100644
 | 
					 | 
				
			||||||
--- a/client-qt/src/messagesadapter.cpp
 | 
					 | 
				
			||||||
+++ b/client-qt/src/messagesadapter.cpp
 | 
					 | 
				
			||||||
@@ -458,13 +458,24 @@ MessagesAdapter::conversationTypersUrlToName(const QSet<QString>& typersSet)
 | 
					 | 
				
			||||||
     return nameList;
 | 
					 | 
				
			||||||
 }
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
-bool
 | 
					 | 
				
			||||||
+QVariantMap
 | 
					 | 
				
			||||||
 MessagesAdapter::isLocalImage(const QString& msg)
 | 
					 | 
				
			||||||
 {
 | 
					 | 
				
			||||||
     QImageReader reader;
 | 
					 | 
				
			||||||
     reader.setDecideFormatFromContent(true);
 | 
					 | 
				
			||||||
     reader.setFileName(msg);
 | 
					 | 
				
			||||||
-    return !reader.read().isNull();
 | 
					 | 
				
			||||||
+    QByteArray fileFormat = reader.format();
 | 
					 | 
				
			||||||
+    if (fileFormat == "gif") {
 | 
					 | 
				
			||||||
+        return {{"isAnimatedImage", true}};
 | 
					 | 
				
			||||||
+    }
 | 
					 | 
				
			||||||
+    QList<QByteArray> supportedFormats = reader.supportedImageFormats();
 | 
					 | 
				
			||||||
+    auto iterator = std::find_if(supportedFormats.begin(),
 | 
					 | 
				
			||||||
+                                 supportedFormats.end(),
 | 
					 | 
				
			||||||
+                                 [fileFormat](QByteArray format) { return format == fileFormat; });
 | 
					 | 
				
			||||||
+    if (iterator != supportedFormats.end()) {
 | 
					 | 
				
			||||||
+        return {{"isImage", true}};
 | 
					 | 
				
			||||||
+    }
 | 
					 | 
				
			||||||
+    return {{"isImage", false}};
 | 
					 | 
				
			||||||
 }
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 QVariantMap
 | 
					 | 
				
			||||||
@@ -476,8 +487,9 @@ MessagesAdapter::getMediaInfo(const QString& msg)
 | 
					 | 
				
			||||||
           "<%1 style='width:100%;height:%2;outline:none;background-color:#f1f3f4;"
 | 
					 | 
				
			||||||
           "object-fit:cover;' "
 | 
					 | 
				
			||||||
           "controls controlsList='nodownload' src='file://%3' type='%4'/></body>";
 | 
					 | 
				
			||||||
-    if (isLocalImage(msg)) {
 | 
					 | 
				
			||||||
-        return {{"isImage", true}};
 | 
					 | 
				
			||||||
+    QVariantMap fileInfo = isLocalImage(msg);
 | 
					 | 
				
			||||||
+    if (fileInfo["isImage"].toBool() || fileInfo["isAnimatedImage"].toBool()) {
 | 
					 | 
				
			||||||
+        return fileInfo;
 | 
					 | 
				
			||||||
     }
 | 
					 | 
				
			||||||
     QRegularExpression vPattern("[^\\s]+(.*?)\\.(avi|mov|webm|webp|rmvb)$",
 | 
					 | 
				
			||||||
                                 QRegularExpression::CaseInsensitiveOption);
 | 
					 | 
				
			||||||
diff --git a/client-qt/src/messagesadapter.h b/client-qt/src/messagesadapter.h
 | 
					 | 
				
			||||||
index bfa4e62..1965c5e 100644
 | 
					 | 
				
			||||||
--- a/client-qt/src/messagesadapter.h
 | 
					 | 
				
			||||||
+++ b/client-qt/src/messagesadapter.h
 | 
					 | 
				
			||||||
@@ -101,7 +101,7 @@ protected:
 | 
					 | 
				
			||||||
     Q_INVOKABLE void deleteInteraction(const QString& interactionId);
 | 
					 | 
				
			||||||
     Q_INVOKABLE void copyToDownloads(const QString& interactionId, const QString& displayName);
 | 
					 | 
				
			||||||
     Q_INVOKABLE void userIsComposing(bool isComposing);
 | 
					 | 
				
			||||||
-    Q_INVOKABLE bool isLocalImage(const QString& msg);
 | 
					 | 
				
			||||||
+    Q_INVOKABLE QVariantMap isLocalImage(const QString& msg);
 | 
					 | 
				
			||||||
     Q_INVOKABLE QVariantMap getMediaInfo(const QString& msg);
 | 
					 | 
				
			||||||
     Q_INVOKABLE bool isRemoteImage(const QString& msg);
 | 
					 | 
				
			||||||
     Q_INVOKABLE QString getFormattedTime(const quint64 timestamp);
 | 
					 | 
				
			||||||
-- 
 | 
					 | 
				
			||||||
GitLab
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,23 +0,0 @@
 | 
				
			||||||
From f5e4619d02526d961c14012a6cae1a091aa149d4 Mon Sep 17 00:00:00 2001
 | 
					 | 
				
			||||||
From: Sébastien Blin <sebastien.blin@savoirfairelinux.com>
 | 
					 | 
				
			||||||
Date: Thu, 27 Jan 2022 13:48:32 -0500
 | 
					 | 
				
			||||||
Subject: [PATCH] misc: link getSupportedAudioManagers
 | 
					 | 
				
			||||||
q
 | 
					 | 
				
			||||||
Change-Id: I897e49cd131d3cbffef9fb1d5c9be3c0bc9bcb3f
 | 
					 | 
				
			||||||
GitLab: #495
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
diff --git a/lrc/src/qtwrapper/configurationmanager_wrap.h b/lrc/src/qtwrapper/configurationmanager_wrap.h
 | 
					 | 
				
			||||||
index a680138..2807f8a 100644
 | 
					 | 
				
			||||||
--- a/lrc/src/qtwrapper/configurationmanager_wrap.h
 | 
					 | 
				
			||||||
+++ b/lrc/src/qtwrapper/configurationmanager_wrap.h
 | 
					 | 
				
			||||||
@@ -526,8 +526,7 @@
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
     QStringList getSupportedAudioManagers()
 | 
					 | 
				
			||||||
     {
 | 
					 | 
				
			||||||
-        QStringList temp;
 | 
					 | 
				
			||||||
-        return temp;
 | 
					 | 
				
			||||||
+        return convertStringList(DRing::getSupportedAudioManagers());
 | 
					 | 
				
			||||||
     }
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
     QStringList getSupportedTlsMethod()
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,70 +0,0 @@
 | 
				
			||||||
From e796b3325d95b5ddd6162b5513c8325210f41fc5 Mon Sep 17 00:00:00 2001
 | 
					 | 
				
			||||||
From: Sébastien Blin <sebastien.blin@savoirfairelinux.com>
 | 
					 | 
				
			||||||
Date: Wed, 26 Jan 2022 11:37:07 -0500
 | 
					 | 
				
			||||||
Subject: [PATCH] datatransferimage: improve memory usage
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
+ Reduce listview caching' size by 50%
 | 
					 | 
				
			||||||
+ use sourceSize to compress images and speedup loading
 | 
					 | 
				
			||||||
+ use autoTransform: true to rotate images when needed
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Change-Id: Idf1babdc73f43aa6a79b89428c25c5d06856c0ef
 | 
					 | 
				
			||||||
GitLab: #649
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
diff --git a/client-qt/src/commoncomponents/DataTransferMessageDelegate.qml b/client-qt/src/commoncomponents/DataTransferMessageDelegate.qml
 | 
					 | 
				
			||||||
index d017c03..ca5913e 100644
 | 
					 | 
				
			||||||
--- a/client-qt/src/commoncomponents/DataTransferMessageDelegate.qml
 | 
					 | 
				
			||||||
+++ b/client-qt/src/commoncomponents/DataTransferMessageDelegate.qml
 | 
					 | 
				
			||||||
@@ -255,9 +255,13 @@
 | 
					 | 
				
			||||||
                     asynchronous: true
 | 
					 | 
				
			||||||
                     width: sourceComponent.width
 | 
					 | 
				
			||||||
                     height: sourceComponent.height
 | 
					 | 
				
			||||||
-                    sourceComponent: mediaInfo.isImage !== undefined ?
 | 
					 | 
				
			||||||
-                                         imageComp : mediaInfo.isAnimatedImage !== undefined ? animatedImageComp :
 | 
					 | 
				
			||||||
-                                         avComp
 | 
					 | 
				
			||||||
+                    sourceComponent: {
 | 
					 | 
				
			||||||
+                        if (mediaInfo.isImage)
 | 
					 | 
				
			||||||
+                            return imageComp
 | 
					 | 
				
			||||||
+                        if (mediaInfo.isAnimatedImage)
 | 
					 | 
				
			||||||
+                            return animatedImageComp
 | 
					 | 
				
			||||||
+                        return avComp
 | 
					 | 
				
			||||||
+                    }
 | 
					 | 
				
			||||||
                     Component {
 | 
					 | 
				
			||||||
                         id: avComp
 | 
					 | 
				
			||||||
                         WebEngineView {
 | 
					 | 
				
			||||||
@@ -316,7 +320,7 @@
 | 
					 | 
				
			||||||
                             fillMode: Image.PreserveAspectCrop
 | 
					 | 
				
			||||||
                             mipmap: true
 | 
					 | 
				
			||||||
                             antialiasing: true
 | 
					 | 
				
			||||||
-                            autoTransform: false
 | 
					 | 
				
			||||||
+                            autoTransform: true
 | 
					 | 
				
			||||||
                             asynchronous: true
 | 
					 | 
				
			||||||
                             source: "file:///" + Body
 | 
					 | 
				
			||||||
                             property real aspectRatio: implicitWidth / implicitHeight
 | 
					 | 
				
			||||||
@@ -361,8 +365,10 @@
 | 
					 | 
				
			||||||
                             fillMode: Image.PreserveAspectCrop
 | 
					 | 
				
			||||||
                             mipmap: true
 | 
					 | 
				
			||||||
                             antialiasing: true
 | 
					 | 
				
			||||||
-                            autoTransform: false
 | 
					 | 
				
			||||||
+                            autoTransform: true
 | 
					 | 
				
			||||||
                             asynchronous: true
 | 
					 | 
				
			||||||
+                            sourceSize.width: width
 | 
					 | 
				
			||||||
+                            sourceSize.height: height
 | 
					 | 
				
			||||||
                             source: "file:///" + Body
 | 
					 | 
				
			||||||
                             property real aspectRatio: implicitWidth / implicitHeight
 | 
					 | 
				
			||||||
                             property real adjustedWidth: Math.min(maxSize,
 | 
					 | 
				
			||||||
diff --git a/client-qt/src/mainview/components/MessageListView.qml b/client-qt/src/mainview/components/MessageListView.qml
 | 
					 | 
				
			||||||
index 2b7c326..f65e67b 100644
 | 
					 | 
				
			||||||
--- a/client-qt/src/mainview/components/MessageListView.qml
 | 
					 | 
				
			||||||
+++ b/client-qt/src/mainview/components/MessageListView.qml
 | 
					 | 
				
			||||||
@@ -174,8 +174,8 @@
 | 
					 | 
				
			||||||
     width: parent.width
 | 
					 | 
				
			||||||
     // this offscreen caching is pretty huge
 | 
					 | 
				
			||||||
     // displayMarginEnd may be removed
 | 
					 | 
				
			||||||
-    displayMarginBeginning: 4096
 | 
					 | 
				
			||||||
-    displayMarginEnd: 4096
 | 
					 | 
				
			||||||
+    displayMarginBeginning: 2048
 | 
					 | 
				
			||||||
+    displayMarginEnd: 2048
 | 
					 | 
				
			||||||
     maximumFlickVelocity: 2048
 | 
					 | 
				
			||||||
     verticalLayoutDirection: ListView.BottomToTop
 | 
					 | 
				
			||||||
     boundsBehavior: Flickable.StopAtBounds
 | 
					 | 
				
			||||||
		Reference in a new issue