Revision: 45445
http://sourceforge.net/p/vice-emu/code/45445
Author: gpz
Date: 2025-01-01 21:21:39 +0000 (Wed, 01 Jan 2025)
Log Message:
-----------
some better error checking, should now handle correctly the case when the ffmpeg binary dies unexpectedly
Modified Paths:
--------------
trunk/vice/src/arch/gtk3/widgets/statusbarrecordingwidget.c
trunk/vice/src/gfxoutputdrv/ffmpegexedrv.c
trunk/vice/src/screenshot.c
Modified: trunk/vice/src/arch/gtk3/widgets/statusbarrecordingwidget.c
===================================================================
--- trunk/vice/src/arch/gtk3/widgets/statusbarrecordingwidget.c 2025-01-01 20:32:46 UTC (rev 45444)
+++ trunk/vice/src/arch/gtk3/widgets/statusbarrecordingwidget.c 2025-01-01 21:21:39 UTC (rev 45445)
@@ -290,11 +290,20 @@
}
#endif
- if ((type != UI_RECORDING_STATUS_NONE) && (type != UI_RECORDING_STATUS_EVENTS) && status) {
- g_timeout_add_seconds(1, update_timer, (gpointer)widget);
- }
DBG(("statusbar_recording_widget_set_recording_status type:%d", type));
+ switch (type) {
+ case UI_RECORDING_STATUS_NONE:
+ statusbar_recording_widget_hide_all(GTK_WIDGET(widget), HIDE_ALL_TIMEOUT);
+ break;
+ case UI_RECORDING_STATUS_EVENTS:
+ break;
+ case UI_RECORDING_STATUS_AUDIO:
+ case UI_RECORDING_STATUS_VIDEO:
+ g_timeout_add_seconds(1, update_timer, (gpointer)widget);
+ break;
+ }
+
/* update recording status text */
label = gtk_grid_get_child_at(GTK_GRID(widget), RW_COL_TEXT, RW_ROW_TEXT);
Modified: trunk/vice/src/gfxoutputdrv/ffmpegexedrv.c
===================================================================
--- trunk/vice/src/gfxoutputdrv/ffmpegexedrv.c 2025-01-01 20:32:46 UTC (rev 45444)
+++ trunk/vice/src/gfxoutputdrv/ffmpegexedrv.c 2025-01-01 21:21:39 UTC (rev 45445)
@@ -439,6 +439,7 @@
static ssize_t write_video_frame(VIDEOFrame *pic)
{
ssize_t len = INPUT_VIDEO_BPP * video_height * video_width;
+ ssize_t res;
if ((video_has_codec > 0) && (video_codec != AV_CODEC_ID_NONE)) {
if (ffmpeg_video_socket == 0) {
@@ -445,7 +446,11 @@
log_error(ffmpeg_log, "FFMPEG: write_video_frame ffmpeg_video_socket is 0 (framecount:%"PRIu64")", framecounter);
return -1;
}
- return len - vice_network_send(ffmpeg_video_socket, pic->data, len, 0 /* flags */);
+ res = vice_network_send(ffmpeg_video_socket, pic->data, len, 0 /* flags */);
+ if (res < 0) {
+ return -1;
+ }
+ return len - res;
}
return 0;
}
Modified: trunk/vice/src/screenshot.c
===================================================================
--- trunk/vice/src/screenshot.c 2025-01-01 20:32:46 UTC (rev 45444)
+++ trunk/vice/src/screenshot.c 2025-01-01 21:21:39 UTC (rev 45445)
@@ -261,6 +261,7 @@
int screenshot_record(void)
{
screenshot_t screenshot;
+ int result;
if (recording_driver == NULL) {
return 0;
@@ -280,7 +281,15 @@
return -1;
}
- return screenshot_save_core(&screenshot, NULL, NULL);
+ result = screenshot_save_core(&screenshot, NULL, NULL);
+ DBG(("screenshot_record result:%d", result));
+ if (result < 0) {
+ /*log_error(screenshot_log, "Video recording failed, stopping...");*/
+ screenshot_stop_recording();
+ ui_display_recording(UI_RECORDING_STATUS_NONE);
+ }
+
+ return result;
}
void screenshot_stop_recording(void)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|