[arch-commits] Commit in telegram-desktop/trunk (2 files)

Jiachen Yang farseerfc at archlinux.org
Mon Jul 8 21:32:05 UTC 2019


    Date: Monday, July 8, 2019 @ 21:32:05
  Author: farseerfc
Revision: 487727

upgpkg: telegram-desktop 1.7.14-2

telegram-desktop 1.7.14-2 fix patching caused animated transparency issue

Modified:
  telegram-desktop/trunk/PKGBUILD
  telegram-desktop/trunk/tdesktop-ffmpeg-fix-convertFromARGB32PM.patch

-----------------------------------------------+
 PKGBUILD                                      |    4 +-
 tdesktop-ffmpeg-fix-convertFromARGB32PM.patch |   46 +++++++++++++++++++-----
 2 files changed, 40 insertions(+), 10 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2019-07-08 20:24:23 UTC (rev 487726)
+++ PKGBUILD	2019-07-08 21:32:05 UTC (rev 487727)
@@ -6,7 +6,7 @@
 
 pkgname=telegram-desktop
 pkgver=1.7.14
-pkgrel=1
+pkgrel=2
 pkgdesc='Official Telegram Desktop client'
 arch=('x86_64')
 url="https://desktop.telegram.org/"
@@ -51,7 +51,7 @@
             '6d0bac5aa4c4992b5400a9a9318f7a4e92d5eab961917cf0b05cdd251ab66a77c52ec8fbef246e8019606a7624d7b5420b87f8153e071e9724c7d2f5c94e47c0'
             'ce6be003220267bac5483caf8302b492e1581892bc36d35a61236ebf9f9d766b8bd2159557a1c36256aa85f461797a38bfaae57b12da7a72101b21c0b17ed653'
             'a83b80668b2dc2cc77c857069fdb45b487793fda01ad8a63bab66c6a1c71e5d032050e4ec7efb5b4c3216badc5377c856ef1f4a59c2e02b24ee53b1d83124bf3'
-            'f0912f2adc6181d3050d8e688c81da5333eeba3166354a72cd4b6abb492c2e6093ca76d577bb4d5ea78706aaa367d952f173d4fd083a1c088172cc5227df61b0'
+            '0dec897774142a09835d36e4064132e92e9404081eb4cba33d7e2643de475ff195448b527181fdb444a15764960dfc55eb59964b77a09642310c7b8e8c236e73'
             '1f7cecfc8698ff9e0abce87226e993e73fdf35111d037c2847f7a1f30e65483ab332e45a1bdb86f6ac4c420c1c1429ac20454655d0e982477e37b7c48f0b1599')
 
 prepare() {

Modified: tdesktop-ffmpeg-fix-convertFromARGB32PM.patch
===================================================================
--- tdesktop-ffmpeg-fix-convertFromARGB32PM.patch	2019-07-08 20:24:23 UTC (rev 487726)
+++ tdesktop-ffmpeg-fix-convertFromARGB32PM.patch	2019-07-08 21:32:05 UTC (rev 487727)
@@ -1,21 +1,50 @@
 diff --git a/Telegram/SourceFiles/ffmpeg/ffmpeg_utility.cpp b/Telegram/SourceFiles/ffmpeg/ffmpeg_utility.cpp
-index 5d0e50926..7d89692f8 100644
+index 5d0e50926..24b47e8c8 100644
 --- a/Telegram/SourceFiles/ffmpeg/ffmpeg_utility.cpp
 +++ b/Telegram/SourceFiles/ffmpeg/ffmpeg_utility.cpp
-@@ -355,6 +355,12 @@ QImage CreateFrameStorage(QSize size) {
+@@ -354,7 +354,41 @@ QImage CreateFrameStorage(QSize size) {
+ 		cleanupData);
  }
  
++QImage CreateFromData(const QImage & from, QImage::Format format){
++	const auto size = from.size();
++	const auto width = size.width();
++	const auto height = size.height();
++	const auto widthAlign = kAlignImageBy / kPixelBytesSize;
++	const auto neededWidth = width + ((width % widthAlign)
++		? (widthAlign - (width % widthAlign))
++		: 0);
++	const auto perLine = neededWidth * kPixelBytesSize;
++	const auto buffer = new uchar[perLine * height + kAlignImageBy];
++	memcpy(buffer, from.bits(), perLine * height + kAlignImageBy);
++	const auto cleanupData = reinterpret_cast<const void *>(buffer);
++	const auto address = reinterpret_cast<uintptr_t>(buffer);
++	const auto alignedBuffer = buffer + ((address % kAlignImageBy)
++		? (kAlignImageBy - (address % kAlignImageBy))
++		: 0);
++	return QImage(
++		alignedBuffer,
++		width,
++		height,
++		perLine,
++		format,
++		AlignedImageBufferCleanupHandler,
++		const_cast<void*>(cleanupData));
++}
++
  void UnPremultiply(QImage &to, const QImage &from) {
-+	to = from.convertToFormat(QImage::Format_ARGB32);
-+        return;
++	auto result = CreateFromData(from, QImage::Format_ARGB32_Premultiplied);
++	result = result.convertToFormat(QImage::Format_ARGB32);
++	to = CreateFromData(result, QImage::Format_ARGB32_Premultiplied);
++	return;
++
 +        //// below is original tdesktop code, we shortcut them by using Qt public API
 +        //// see https://github.com/telegramdesktop/tdesktop/issues/6219
 +        /*
-+
  	// This creates QImage::Format_ARGB32_Premultiplied, but we use it
  	// as an image in QImage::Format_ARGB32 format.
  	if (!GoodStorageForFrame(to, from.size())) {
-@@ -387,9 +393,16 @@ void UnPremultiply(QImage &to, const QImage &from) {
+@@ -387,9 +421,17 @@ void UnPremultiply(QImage &to, const QImage &from) {
  			layout,
  			nullptr);
  	}
@@ -23,16 +52,17 @@
  }
  
  void PremultiplyInplace(QImage &image) {
++	image = CreateFromData(image, QImage::Format_ARGB32);
 +	image = image.convertToFormat(QImage::Format_ARGB32_Premultiplied);
 +	return;
++
 +        //// below is original tdesktop code, we shortcut them by using Qt public API
 +        //// see https://github.com/telegramdesktop/tdesktop/issues/6219
 +        /*
-+
  	const auto layout = &qPixelLayouts[QImage::Format_ARGB32];
  	const auto convert = layout->convertToARGB32PM;
  	const auto perLine = image.bytesPerLine();
-@@ -413,6 +426,7 @@ void PremultiplyInplace(QImage &image) {
+@@ -413,6 +455,7 @@ void PremultiplyInplace(QImage &image) {
  			layout,
  			nullptr);
  	}



More information about the arch-commits mailing list