From 391dd597e205b9f302aaaeac7bd94400390b44b2 Mon Sep 17 00:00:00 2001 From: "Sebastian J. Wolf" Date: Sat, 29 Aug 2020 16:32:43 +0200 Subject: [PATCH] Initial performance improvements --- images/background-black-small.png | Bin 0 -> 18828 bytes images/background-white-small.png | Bin 0 -> 18673 bytes qml/components/AudioPreview.qml | 6 +++++- qml/components/ImagePreview.qml | 3 ++- qml/components/StickerPreview.qml | 3 ++- qml/components/VideoPreview.qml | 8 +++++++- qml/components/WebPagePreview.qml | 22 +++++++++++----------- qml/pages/AboutPage.qml | 1 + qml/pages/CoverPage.qml | 3 ++- qml/pages/ImagePage.qml | 4 +++- qml/pages/InitializationPage.qml | 4 ++++ src/tdlibreceiver.cpp | 2 +- 12 files changed, 38 insertions(+), 18 deletions(-) create mode 100644 images/background-black-small.png create mode 100644 images/background-white-small.png diff --git a/images/background-black-small.png b/images/background-black-small.png new file mode 100644 index 0000000000000000000000000000000000000000..7b59b4b5c17d3995644255f8852ae060537efe07 GIT binary patch literal 18828 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 EB!)6Ba~m&U+MGL`|!|V`OSaONUha$ z=o=_b3C<(n+0&8}EyOPblT`taDtWR}VqoBO6{Jbmuuxpb5zeFWPam})R`+kxzQRY0w2tFq$rI^2Zo znsEgiin~lYZMkHDVC{ar2{jr3AJU&g7YckXTfv)Y^QABk0C1pi!6Sz?K4e-e8uMvI zm1FY^0a$)?i9TWjPf}#t=$L(y^T>vEU$d#|BH!zV;69vXs$@1SwszDupr7OpeueM3 zdq?>UU&QwS0JDv#XZl24k9z(b>M_tX0NT(QraK5|@B>)CV<=1`tF%Jpdb(-`xBfjJ6-gh-EY41jNx2lHlrH!% z{Pi0)@MM;ht)Yw=cu_x$+nRSA8G!q_;rePc=>eJj*H%PO{OtnxcD?AwRflrZ8qo^K z)pg{d_2Dc=`APph9UV#EfJw!IsJN8-1^o`|6%#Zy2h22c_(@}F4Z?TJ; z81X)BH$u-qTLn}_@wz;0CR*P*arKAj<5it|?HV*em`oF^ zq_M{)S`F2Y)>5}h`pAX2krGwx(uGTD241we3ioXh(TVyQu4l3(t)grT`2H=&XcpUr zL#P$w;e>M)ZNu38Wc|nSld8_yRC4LaYw@In*%bE9E&ATVZX^1c{q!4(QUmc_$AiSU zyt*K52^9uY2bbi^4xRuF?82B^_Td;EQ?MRWhVY|2giDaG>D_C9_3n-J)#eYHTB*?_ zW=&*qUQ8f48@r)H^RD0+1Mu$;Paf;)%;kFVta@9NlR5L35>%gGa(pTdZ8Sb#O6cwNOigLC5>n;RG=4a%lT`6Irv(-C1-5#eOLbh@(lTzd{S2j0+~Ai^}M^is-(>H4KSZn<^u>+(Dz-3xUAe|~8i&nQDft=u)QREe z>n;#gfkp`eZ~oiyM=0qdfwQnhCB|`aq~S1oMb#Hx&HEsh5(aZemhd#>ob>^G>@N}} zlULwQT;5Qag~>S8tb;4S&!cHWL6?}|eqM9x>RWZHY~sA>SY5yEH`cxM%wP72EZDR;t$p(>v+!V;K4<*TaG64_AO(o za}#HkqIQYosm5k&DCvQ_PdoxgZZyuEMSYy8ShO|fxLmgopi~u84Rp~L9c6MAtaJ*k zxp~ZW36fuN*9TtLtGLcg>uN^O+iF)itrBk=eVjz6% ztSWm^R<6M!-#K<;a%qK-vtgpomu7wGNF;q!XK`g#o+1geC*5{1=+*Z6YHok&LzrS= z>1Ao0e^Yb#Tl0V#+<+S;$dnDTo9Pp_GV0l{8Q)~R_@RX{viGiey9Lv=lbhE73U@v; zuR6ld?!ZaDujKE7CnsJfYsWP9-QD*vi9Q;IS=5rA2}QytLvxBUqi~`+kl(FY+KNV# z0F{h+(@jxrG4EpBhEw2xCK(y|Dc;0ec?W>bmgfPWX&?^=xG&D-p*X8t7tdCaMJcIs z)%rVP3pCGd)s67jhk>#BneDm#_}M@o?3ch8vxr)rOXZzv<=uxT>7zPPhd`rzWFiur zT=2a1JFAfLW?W$xK9z_NA^BC+z3^JKo7okFXUmf5y` zZ0x%Yr5t(2a3!|wzrCsq-0UmR>|&dym&B+sa~L5)MrEDCe!Civ_S6`Ah=~=$-()

#rI`@nXk&@$vZ5Rz= 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Ξ&_?9tutJb4NAu9WC0Efqb#Vq3GvM*e9h~tYoX`m@glgo$ypdh2Ith!o zUC$Ji@o?=}$kNG?JqO`b`OuI*I_6wm zhPC-Z7l6^S=}a3ULC%a!W6Sd7441|WTvsjdJ#8D!KGA?r8eBVrqRM z3H~}I^a22(OEqMmle<>a>54Rr;(PhZ0uZwq{SBlP;OiX41=#U1B9flU^SIS-9EqygvDeyxVmP6u<#Gcg9zMLN zfoc)jo?Sl>-L{o8rg*PjM@1+*`wYoQ}6f4 ziiEr%hN2jjn>AK}STkPMR83^Ag1cnQ*K{<`4+F*k;CLNzxXF%*YlLf|9HzlHEb$1+ zhJln*Ef}NH{2y0{zIF#T#~*(&`Klt|B?<1C?b#}8^>Z9WV=wGV)wtS;6nVT>*qE>o zWyCAd;HX-5dR8bWN=cQc%gJGkwm>M+AVs^078!bM8ZbRuKtw`y2Upf;P@pkR%5v^4kmIb?j`J1r_ym{E`dX~riMd6x`?otu4m^)eGa z{$5H-rfo@dRnshPZfGK_Vwglx^Hkz~x~Q|@cr0sI;iE+*Zw}cd%f5%|*lo4S@H;v5Au&EWGAfiTLj~g33=`mIaPbIawV%Om4q_Qcs_xI+(1Z&N~tBPEGckPs}YUZ zdPSXjX}-_U)36rPhT}5Tm04(oR0BX(8)r(3@_fpeFRKhpkc{t#J5AiYyqz*t&Srx! zs^z8}IXVfO1SCv*+A((JfVpRhoX=7a(3T3RIVV)coi)q9vKKu^&(U-Ih8_POKvixM TJ26oj00000NkvXXu0mjf!7k>V literal 0 HcmV?d00001 diff --git a/images/background-white-small.png b/images/background-white-small.png new file mode 100644 index 0000000000000000000000000000000000000000..250afb0e326f320ff2b3c713a53c14e0cfa3e513 GIT binary patch literal 18673 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 UG4EO+fdBvi07*qoM6N<$g6PCUGynhq literal 0 HcmV?d00001 diff --git a/qml/components/AudioPreview.qml b/qml/components/AudioPreview.qml index 652b56c..05139e9 100644 --- a/qml/components/AudioPreview.qml +++ b/qml/components/AudioPreview.qml @@ -107,19 +107,21 @@ Item { width: parent.width height: parent.height anchors.centerIn: parent + asynchronous: true fillMode: Image.PreserveAspectCrop visible: status === Image.Ready ? true : false } Image { id: imageLoadingBackgroundImage - source: "../../images/background" + ( Theme.colorScheme ? "-black" : "-white" ) + ".png" + source: "../../images/background-" + ( Theme.colorScheme ? "black" : "white" ) + "-small.png" anchors { centerIn: parent } width: parent.width - Theme.paddingSmall height: parent.height - Theme.paddingSmall visible: placeholderImage.status !== Image.Ready + asynchronous: true fillMode: Image.PreserveAspectFit opacity: 0.15 @@ -146,6 +148,7 @@ Item { width: Theme.iconSizeLarge height: Theme.iconSizeLarge source: "image://theme/icon-l-play?white" + asynchronous: true visible: placeholderImage.status === Image.Ready ? true : false MouseArea { anchors.fill: parent @@ -343,6 +346,7 @@ Item { anchors.centerIn: parent width: Theme.iconSizeLarge height: Theme.iconSizeLarge + asynchronous: true source: "image://theme/icon-l-play?white" MouseArea { anchors.fill: parent diff --git a/qml/components/ImagePreview.qml b/qml/components/ImagePreview.qml index 1a7d4ea..67798c3 100644 --- a/qml/components/ImagePreview.qml +++ b/qml/components/ImagePreview.qml @@ -84,13 +84,14 @@ Item { Image { id: imageLoadingBackgroundImage - source: "../../images/background" + ( Theme.colorScheme ? "-black" : "-white" ) + ".png" + source: "../../images/background-" + ( Theme.colorScheme ? "black" : "white" ) + "-small.png" anchors { centerIn: parent } width: parent.width - Theme.paddingMedium height: parent.height - Theme.paddingMedium visible: singleImage.status !== Image.Ready + asynchronous: true fillMode: Image.PreserveAspectFit opacity: 0.15 diff --git a/qml/components/StickerPreview.qml b/qml/components/StickerPreview.qml index 57dc882..974768e 100644 --- a/qml/components/StickerPreview.qml +++ b/qml/components/StickerPreview.qml @@ -96,13 +96,14 @@ Item { Image { id: imageLoadingBackgroundImage - source: "../../images/background" + ( Theme.colorScheme ? "-black" : "-white" ) + ".png" + source: "../../images/background-" + ( Theme.colorScheme ? "black" : "white" ) + "-small.png" anchors { centerIn: parent } width: ( ( parent.width - Theme.paddingSmall ) >= stickerData.width ) ? stickerData.width : ( parent.width - Theme.paddingSmall ) height: ( ( parent.height - Theme.paddingSmall ) >= stickerData.height ) ? stickerData.height : ( parent.height - Theme.paddingSmall ) visible: singleImage.status !== Image.Ready + asynchronous: true fillMode: Image.PreserveAspectFit opacity: 0.15 diff --git a/qml/components/VideoPreview.qml b/qml/components/VideoPreview.qml index 96941b6..e5a6b8b 100644 --- a/qml/components/VideoPreview.qml +++ b/qml/components/VideoPreview.qml @@ -129,18 +129,20 @@ Item { height: parent.height anchors.centerIn: parent fillMode: Image.PreserveAspectCrop + asynchronous: true visible: status === Image.Ready ? true : false } Image { id: imageLoadingBackgroundImage - source: "../../images/background" + ( Theme.colorScheme ? "-black" : "-white" ) + ".png" + source: "../../images/background-" + ( Theme.colorScheme ? "black" : "white" ) + "-small.png" anchors { centerIn: parent } width: parent.width - Theme.paddingSmall height: parent.height - Theme.paddingSmall visible: placeholderImage.status !== Image.Ready + asynchronous: true fillMode: Image.PreserveAspectFit opacity: 0.15 @@ -167,6 +169,7 @@ Item { width: Theme.iconSizeLarge height: Theme.iconSizeLarge source: "image://theme/icon-l-play?white" + asynchronous: true visible: placeholderImage.status === Image.Ready ? true : false MouseArea { anchors.fill: parent @@ -194,6 +197,7 @@ Item { anchors.centerIn: parent width: Theme.iconSizeLarge height: Theme.iconSizeLarge + asynchronous: true source: "../../images/icon-l-fullscreen.png" visible: ( placeholderImage.status === Image.Ready && !videoMessageComponent.fullscreen ) ? true : false MouseArea { @@ -402,6 +406,7 @@ Item { anchors.centerIn: parent width: Theme.iconSizeLarge height: Theme.iconSizeLarge + asynchronous: true source: "image://theme/icon-l-play?white" MouseArea { anchors.fill: parent @@ -423,6 +428,7 @@ Item { anchors.centerIn: parent width: Theme.iconSizeLarge height: Theme.iconSizeLarge + asynchronous: true source: "../../images/icon-l-fullscreen.png" visible: ( videoComponentLoader.active && messageVideo.playbackState === MediaPlayer.PausedState ) ? true : false MouseArea { diff --git a/qml/components/WebPagePreview.qml b/qml/components/WebPagePreview.qml index b984331..5072f62 100644 --- a/qml/components/WebPagePreview.qml +++ b/qml/components/WebPagePreview.qml @@ -38,7 +38,7 @@ Column { } function updateWebPage() { - if (typeof webPageData === "object") { + if (webPageData) { if (typeof webPageData.photo !== "undefined") { hasImage = true; // Check first which size fits best... @@ -48,12 +48,11 @@ Column { break; } } - } - - if (pictureFileInformation.local.is_downloading_completed) { - singleImage.source = pictureFileInformation.local.path; - } else { - tdLibWrapper.downloadFile(pictureFileInformation.id); + if (pictureFileInformation.local.is_downloading_completed) { + singleImage.source = pictureFileInformation.local.path; + } else { + tdLibWrapper.downloadFile(pictureFileInformation.id); + } } } } @@ -74,7 +73,7 @@ Column { id: siteNameText width: parent.width - text: Emoji.emojify(webPageData.site_name, font.pixelSize) + text: webPageData.site_name ? Emoji.emojify(webPageData.site_name, font.pixelSize) : 0 font.pixelSize: Theme.fontSizeExtraSmall font.bold: true color: Theme.secondaryHighlightColor @@ -88,7 +87,7 @@ Column { id: titleText width: parent.width - text: Emoji.emojify(webPageData.title, font.pixelSize) + text: webPageData.title ? Emoji.emojify(webPageData.title, font.pixelSize) : 0 font.pixelSize: Theme.fontSizeExtraSmall font.bold: true color: Theme.primaryColor @@ -103,7 +102,7 @@ Column { id: descriptionText width: parent.width - text: Emoji.emojify(webPageData.description, font.pixelSize) + text: webPageData.description ? Emoji.emojify(webPageData.description, font.pixelSize) : 0 font.pixelSize: Theme.fontSizeExtraSmall color: Theme.primaryColor elide: Text.ElideRight @@ -141,13 +140,14 @@ Column { Image { id: imageLoadingBackgroundImage - source: "../../images/background" + ( Theme.colorScheme ? "-black" : "-white" ) + ".png" + source: "../../images/background-" + ( Theme.colorScheme ? "black" : "white" ) + "-small.png" anchors { centerIn: parent } width: parent.width - Theme.paddingMedium height: parent.height - Theme.paddingMedium visible: hasImage && singleImage.status !== Image.Ready + asynchronous: true fillMode: Image.PreserveAspectFit opacity: 0.15 diff --git a/qml/pages/AboutPage.qml b/qml/pages/AboutPage.qml index 087a5b3..d7ea27c 100644 --- a/qml/pages/AboutPage.qml +++ b/qml/pages/AboutPage.qml @@ -50,6 +50,7 @@ Page { } fillMode: Image.PreserveAspectFit + asynchronous: true width: 2/3 * parent.width } diff --git a/qml/pages/CoverPage.qml b/qml/pages/CoverPage.qml index 115d296..ac22f40 100644 --- a/qml/pages/CoverPage.qml +++ b/qml/pages/CoverPage.qml @@ -91,7 +91,7 @@ CoverBackground { Image { id: backgroundImage - source: "../../images/background" + ( Theme.colorScheme ? "-black" : "-white" ) + ".png" + source: "../../images/background-" + ( Theme.colorScheme ? "black" : "white" ) + ".png" anchors { verticalCenter: parent.verticalCenter @@ -100,6 +100,7 @@ CoverBackground { right: parent.right rightMargin: Theme.paddingMedium + asynchronous: true } fillMode: Image.PreserveAspectFit diff --git a/qml/pages/ImagePage.qml b/qml/pages/ImagePage.qml index b02bb17..e580171 100644 --- a/qml/pages/ImagePage.qml +++ b/qml/pages/ImagePage.qml @@ -137,6 +137,7 @@ Page { anchors.centerIn: parent fillMode: Image.PreserveAspectFit + asynchronous: true visible: status === Image.Ready ? true : false opacity: status === Image.Ready ? 1 : 0 @@ -171,13 +172,14 @@ Page { Image { id: imageLoadingBackgroundImage - source: "../../images/background" + ( Theme.colorScheme ? "-black" : "-white" ) + ".png" + source: "../../images/background-" + ( Theme.colorScheme ? "black" : "white" ) + "-small.png" anchors { centerIn: parent } width: parent.width - Theme.paddingMedium height: parent.height - Theme.paddingMedium visible: singleImage.status !== Image.Ready + asynchronous: true fillMode: Image.PreserveAspectFit opacity: 0.15 diff --git a/qml/pages/InitializationPage.qml b/qml/pages/InitializationPage.qml index 8e9b5aa..d52f912 100644 --- a/qml/pages/InitializationPage.qml +++ b/qml/pages/InitializationPage.qml @@ -79,6 +79,7 @@ Page { } fillMode: Image.PreserveAspectFit + asynchronous: true width: 1/2 * parent.width } @@ -119,6 +120,7 @@ Page { } fillMode: Image.PreserveAspectFit + asynchronous: true width: 1/2 * parent.width } @@ -171,6 +173,7 @@ Page { } fillMode: Image.PreserveAspectFit + asynchronous: true width: 1/2 * parent.width } @@ -229,6 +232,7 @@ Page { } fillMode: Image.PreserveAspectFit + asynchronous: true width: 1/2 * parent.width } diff --git a/src/tdlibreceiver.cpp b/src/tdlibreceiver.cpp index d8c51f5..dfe762a 100644 --- a/src/tdlibreceiver.cpp +++ b/src/tdlibreceiver.cpp @@ -42,7 +42,7 @@ void TDLibReceiver::receiverLoop() const char *result = td_json_client_receive(this->tdLibClient, WAIT_TIMEOUT); if (result) { QJsonDocument receivedJsonDocument = QJsonDocument::fromJson(QByteArray(result)); - qDebug().noquote() << "[TDLibReceiver] Raw result: " << receivedJsonDocument.toJson(QJsonDocument::Indented); + // qDebug().noquote() << "[TDLibReceiver] Raw result: " << receivedJsonDocument.toJson(QJsonDocument::Indented); processReceivedDocument(receivedJsonDocument); } }