1
0
mirror of https://github.com/chylex/TweetDuck.git synced 2025-05-03 05:34:07 +02:00

Hide video player overlay when video process exits gracelessly

This commit is contained in:
chylex 2017-08-12 03:12:50 +02:00
parent 551dd229f5
commit 1e86a33ceb
3 changed files with 14 additions and 6 deletions
Core
video/TweetDuck.Video

View File

@ -527,6 +527,7 @@ public void PlayVideo(string url){
if (videoPlayer == null){
videoPlayer = new VideoPlayer(this);
videoPlayer.ProcessExitedGracelessly += (sender, args) => HideVideoOverlay();
}
videoPlayer.Launch(url);

View File

@ -19,6 +19,8 @@ public bool Running{
}
}
public event EventHandler ProcessExitedGracelessly;
private readonly Form owner;
private Process currentProcess;
private string lastUrl;
@ -69,14 +71,14 @@ public void Close(){
private void process_Exited(object sender, EventArgs e){
switch(currentProcess.ExitCode){
case 2: // CODE_LAUNCH_FAIL
case 3: // CODE_LAUNCH_FAIL
if (FormMessage.Error("Video Playback Error", "Error launching video player, this may be caused by missing Windows Media Player. Do you want to open the video in a browser?", FormMessage.Yes, FormMessage.No)){
BrowserUtils.OpenExternalBrowser(lastUrl);
}
break;
case 3: // CODE_MEDIA_ERROR
case 4: // CODE_MEDIA_ERROR
if (FormMessage.Error("Video Playback Error", "The video could not be loaded, most likely due to unknown format. Do you want to open the video in a browser?", FormMessage.Yes, FormMessage.No)){
BrowserUtils.OpenExternalBrowser(lastUrl);
}
@ -84,6 +86,10 @@ private void process_Exited(object sender, EventArgs e){
break;
}
if (currentProcess.ExitCode != 0){
ProcessExitedGracelessly?.Invoke(this, new EventArgs());
}
currentProcess.Dispose();
currentProcess = null;
}

View File

@ -5,10 +5,11 @@
namespace TweetDuck.Video{
static class Program{
// referenced in VideoPlayer
public const int CODE_INVALID_ARGS = 1;
public const int CODE_LAUNCH_FAIL = 2;
public const int CODE_MEDIA_ERROR = 3;
public const int CODE_OWNER_GONE = 4;
// set by task manager -- public const int CODE_PROCESS_KILLED = 1;
public const int CODE_INVALID_ARGS = 2;
public const int CODE_LAUNCH_FAIL = 3;
public const int CODE_MEDIA_ERROR = 4;
public const int CODE_OWNER_GONE = 5;
private static uint? message;
public static uint VideoPlayerMessage => message ?? (message = NativeMethods.RegisterWindowMessage("TweetDuckVideoPlayer")).Value;