mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu-mainline.git
				synced 2025-03-21 01:53:15 +00:00 
			
		
		
		
	Add a workaround if QMovie isn't available
This commit is contained in:
		
							parent
							
								
									08fcf41b0a
								
							
						
					
					
						commit
						69da267540
					
				| @ -8,7 +8,6 @@ | |||||||
| #include <QIODevice> | #include <QIODevice> | ||||||
| #include <QImage> | #include <QImage> | ||||||
| #include <QLabel> | #include <QLabel> | ||||||
| #include <QMovie> |  | ||||||
| #include <QPainter> | #include <QPainter> | ||||||
| #include <QPalette> | #include <QPalette> | ||||||
| #include <QPixmap> | #include <QPixmap> | ||||||
| @ -20,6 +19,12 @@ | |||||||
| #include "ui_loading_screen.h" | #include "ui_loading_screen.h" | ||||||
| #include "yuzu/loading_screen.h" | #include "yuzu/loading_screen.h" | ||||||
| 
 | 
 | ||||||
|  | // Mingw seems to not have QMovie at all. If QMovie is missing then use a single frame instead of an
 | ||||||
|  | // showing the full animation
 | ||||||
|  | #if !YUZU_QT_MOVIE_MISSING | ||||||
|  | #include <QMovie> | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
| LoadingScreen::LoadingScreen(QWidget* parent) | LoadingScreen::LoadingScreen(QWidget* parent) | ||||||
|     : QWidget(parent), ui(std::make_unique<Ui::LoadingScreen>()) { |     : QWidget(parent), ui(std::make_unique<Ui::LoadingScreen>()) { | ||||||
|     ui->setupUi(this); |     ui->setupUi(this); | ||||||
| @ -32,6 +37,11 @@ LoadingScreen::~LoadingScreen() = default; | |||||||
| void LoadingScreen::Prepare(Loader::AppLoader& loader) { | void LoadingScreen::Prepare(Loader::AppLoader& loader) { | ||||||
|     std::vector<u8> buffer; |     std::vector<u8> buffer; | ||||||
|     if (loader.ReadBanner(buffer) == Loader::ResultStatus::Success) { |     if (loader.ReadBanner(buffer) == Loader::ResultStatus::Success) { | ||||||
|  | #ifdef YUZU_QT_MOVIE_MISSING | ||||||
|  |         QPixmap map; | ||||||
|  |         map.loadFromData(buffer.data(), buffer.size()); | ||||||
|  |         ui->banner->setPixmap(map); | ||||||
|  | #else | ||||||
|         backing_mem = |         backing_mem = | ||||||
|             std::make_unique<QByteArray>(reinterpret_cast<char*>(buffer.data()), buffer.size()); |             std::make_unique<QByteArray>(reinterpret_cast<char*>(buffer.data()), buffer.size()); | ||||||
|         backing_buf = std::make_unique<QBuffer>(backing_mem.get()); |         backing_buf = std::make_unique<QBuffer>(backing_mem.get()); | ||||||
| @ -39,6 +49,7 @@ void LoadingScreen::Prepare(Loader::AppLoader& loader) { | |||||||
|         animation = std::make_unique<QMovie>(backing_buf.get(), QByteArray("GIF")); |         animation = std::make_unique<QMovie>(backing_buf.get(), QByteArray("GIF")); | ||||||
|         animation->start(); |         animation->start(); | ||||||
|         ui->banner->setMovie(animation.get()); |         ui->banner->setMovie(animation.get()); | ||||||
|  | #endif | ||||||
|         buffer.clear(); |         buffer.clear(); | ||||||
|     } |     } | ||||||
|     if (loader.ReadLogo(buffer) == Loader::ResultStatus::Success) { |     if (loader.ReadLogo(buffer) == Loader::ResultStatus::Success) { | ||||||
| @ -65,7 +76,9 @@ void LoadingScreen::paintEvent(QPaintEvent* event) { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void LoadingScreen::Clear() { | void LoadingScreen::Clear() { | ||||||
|  | #ifndef YUZU_QT_MOVIE_MISSING | ||||||
|     animation.reset(); |     animation.reset(); | ||||||
|     backing_buf.reset(); |     backing_buf.reset(); | ||||||
|     backing_mem.reset(); |     backing_mem.reset(); | ||||||
|  | #endif | ||||||
| } | } | ||||||
|  | |||||||
| @ -7,6 +7,10 @@ | |||||||
| #include <memory> | #include <memory> | ||||||
| #include <QWidget> | #include <QWidget> | ||||||
| 
 | 
 | ||||||
|  | #if !QT_CONFIG(movie) | ||||||
|  | #define YUZU_QT_MOVIE_MISSING 1 | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
| namespace Loader { | namespace Loader { | ||||||
| class AppLoader; | class AppLoader; | ||||||
| } | } | ||||||
| @ -42,9 +46,11 @@ public: | |||||||
|     void OnLoadProgress(std::size_t value, std::size_t total); |     void OnLoadProgress(std::size_t value, std::size_t total); | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|  | #ifndef YUZU_QT_MOVIE_MISSING | ||||||
|     std::unique_ptr<QMovie> animation; |     std::unique_ptr<QMovie> animation; | ||||||
|     std::unique_ptr<QBuffer> backing_buf; |     std::unique_ptr<QBuffer> backing_buf; | ||||||
|     std::unique_ptr<QByteArray> backing_mem; |     std::unique_ptr<QByteArray> backing_mem; | ||||||
|  | #endif | ||||||
|     std::unique_ptr<Ui::LoadingScreen> ui; |     std::unique_ptr<Ui::LoadingScreen> ui; | ||||||
|     std::size_t previous_total = 0; |     std::size_t previous_total = 0; | ||||||
| }; | }; | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 James Rowe
						James Rowe