Jean-Baptiste Kempf pushed to branch master at VideoLAN / VLC


Commits:
42dd825c by Prince Gupta at 2022-02-13T10:20:31+00:00
qt/RoundImage: fix incorrect image displayed

previously when the image is found in the cache, the generator
was not reset, this caused an invalid image to be loaded

reset the image generator on update request

- - - - -
9734618e by Prince Gupta at 2022-02-13T10:20:31+00:00
qt/RoundImage: fix typo in variable name

- - - - -
5c9ae311 by Prince Gupta at 2022-02-13T10:20:31+00:00
qt/RoundImage: handle network reply error

- - - - -


1 changed file:

- modules/gui/qt/widgets/native/roundimage.cpp


Changes:

=====================================
modules/gui/qt/widgets/native/roundimage.cpp
=====================================
@@ -93,6 +93,12 @@ namespace
             QObject::connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
             loop.exec();
 
+            if (reply->error() != QNetworkReply::NoError)
+            {
+                qDebug() << reply->errorString();
+                return {};
+            }
+
             class DataOwningBuffer : public QBuffer
             {
             public:
@@ -243,6 +249,8 @@ void RoundImage::regenerateRoundImage()
     if (!m_isComponentComplete || m_enqueuedGeneration)
         return;
 
+    m_roundImageGenerator.reset();
+
     // use Qt::QueuedConnection to delay generation, so that dependent 
properties
     // subsequent updates can be merged, f.e when VLCStyle.scale changes
     m_enqueuedGeneration = true;
@@ -250,12 +258,13 @@ void RoundImage::regenerateRoundImage()
     QMetaObject::invokeMethod(this, [this] ()
     {
         m_enqueuedGeneration = false;
+        assert(!m_roundImageGenerator);
 
-        const qreal scaleWidth = this->width() * m_dpr;
+        const qreal scaledWidth = this->width() * m_dpr;
         const qreal scaledHeight = this->height() * m_dpr;
         const qreal scaledRadius = this->radius() * m_dpr;
 
-        const ImageCacheKey key {source(), QSizeF {scaleWidth, 
scaledHeight}.toSize(), scaledRadius};
+        const ImageCacheKey key {source(), QSizeF {scaledWidth, 
scaledHeight}.toSize(), scaledRadius};
         if (auto image = imageCache.object(key)) // should only by called in 
mainthread
         {
             m_roundImage = *image;
@@ -267,7 +276,7 @@ void RoundImage::regenerateRoundImage()
 
         // Image is generated in size factor of `m_dpr` to avoid scaling 
artefacts when
         // generated image is set with device pixel ratio
-        m_roundImageGenerator.reset(new RoundImageGenerator(m_source, 
scaleWidth, scaledHeight, scaledRadius));
+        m_roundImageGenerator.reset(new RoundImageGenerator(m_source, 
scaledWidth, scaledHeight, scaledRadius));
         connect(m_roundImageGenerator.get(), &BaseAsyncTask::result, this, 
[this, key]()
         {
             const auto image = new QImage(m_roundImageGenerator->takeResult());



View it on GitLab: 
https://code.videolan.org/videolan/vlc/-/compare/25556bcb4eed9ba69ab0299af06e0e3235fbb2cd...5c9ae3119a34db16a2543b43eb3585777ecc146d

-- 
View it on GitLab: 
https://code.videolan.org/videolan/vlc/-/compare/25556bcb4eed9ba69ab0299af06e0e3235fbb2cd...5c9ae3119a34db16a2543b43eb3585777ecc146d
You're receiving this email because of your account on code.videolan.org.


VideoLAN code repository instance
_______________________________________________
vlc-commits mailing list
[email protected]
https://mailman.videolan.org/listinfo/vlc-commits

Reply via email to