From 06629ad171f7a4a1fd160cc6ba15452283996260 Mon Sep 17 00:00:00 2001
From: John Preston <johnprestonmail@gmail.com>
Date: Fri, 5 Jun 2020 14:26:42 +0400
Subject: [PATCH] Fix crash in PiP with bad video files.

---
 Telegram/SourceFiles/media/view/media_view_pip.cpp | 9 +++++++--
 Telegram/SourceFiles/media/view/media_view_pip.h   | 1 +
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/Telegram/SourceFiles/media/view/media_view_pip.cpp b/Telegram/SourceFiles/media/view/media_view_pip.cpp
index 4fb4baeb5..f026db604 100644
--- a/Telegram/SourceFiles/media/view/media_view_pip.cpp
+++ b/Telegram/SourceFiles/media/view/media_view_pip.cpp
@@ -1152,7 +1152,7 @@ void Pip::paint(QPainter &p, FrameRequest request) {
 	} else {
 		p.drawImage(rect, RotateFrameImage(image, _rotation));
 	}
-	if (_instance.player().ready()) {
+	if (canUseVideoFrame()) {
 		_instance.markFrameShown();
 	}
 	paintRadialLoading(p);
@@ -1377,8 +1377,13 @@ void Pip::restartAtSeekPosition(crl::time position) {
 	updatePlaybackState();
 }
 
+bool Pip::canUseVideoFrame() const {
+	return _instance.player().ready()
+		&& !_instance.info().video.cover.isNull();
+}
+
 QImage Pip::videoFrame(const FrameRequest &request) const {
-	if (_instance.player().ready()) {
+	if (canUseVideoFrame()) {
 		_preparedCoverStorage = QImage();
 		return _instance.frame(request);
 	}
diff --git a/Telegram/SourceFiles/media/view/media_view_pip.h b/Telegram/SourceFiles/media/view/media_view_pip.h
index 6552b1bed..747139a48 100644
--- a/Telegram/SourceFiles/media/view/media_view_pip.h
+++ b/Telegram/SourceFiles/media/view/media_view_pip.h
@@ -169,6 +169,7 @@ private:
 	void updatePlayPauseResumeState(const Player::TrackState &state);
 	void restartAtSeekPosition(crl::time position);
 
+	[[nodiscard]] bool canUseVideoFrame() const;
 	[[nodiscard]] QImage videoFrame(const FrameRequest &request) const;
 	[[nodiscard]] QImage videoFrameForDirectPaint(
 		const FrameRequest &request) const;