summaryrefslogtreecommitdiffstats
path: root/player/screenshot.c
diff options
context:
space:
mode:
Diffstat (limited to 'player/screenshot.c')
-rw-r--r--player/screenshot.c65
1 files changed, 19 insertions, 46 deletions
diff --git a/player/screenshot.c b/player/screenshot.c
index df8da9697c..af06701bbb 100644
--- a/player/screenshot.c
+++ b/player/screenshot.c
@@ -49,8 +49,6 @@
typedef struct screenshot_ctx {
struct MPContext *mpctx;
- bool osd;
-
// Command to repeat in each-frame mode.
struct mp_cmd *each_frame;
@@ -66,26 +64,6 @@ void screenshot_init(struct MPContext *mpctx)
};
}
-static void screenshot_msg(screenshot_ctx *ctx, int status, const char *msg,
- ...) PRINTF_ATTRIBUTE(3,4);
-
-static void screenshot_msg(screenshot_ctx *ctx, int status, const char *msg,
- ...)
-{
- va_list ap;
- char *s;
-
- va_start(ap, msg);
- s = talloc_vasprintf(NULL, msg, ap);
- va_end(ap);
-
- MP_MSG(ctx->mpctx, status, "%s\n", s);
- if (ctx->osd && status <= MSGL_INFO)
- set_osd_msg(ctx->mpctx, 1, ctx->mpctx->opts->osd_duration, "%s", s);
-
- talloc_free(s);
-}
-
static char *stripext(void *talloc_ctx, const char *s)
{
const char *end = strrchr(s, '.');
@@ -94,14 +72,14 @@ static char *stripext(void *talloc_ctx, const char *s)
return talloc_asprintf(talloc_ctx, "%.*s", (int)(end - s), s);
}
-static bool write_screenshot(struct MPContext *mpctx, struct mp_image *img,
+static bool write_screenshot(struct mp_cmd_ctx *cmd, struct mp_image *img,
const char *filename, struct image_writer_opts *opts)
{
- screenshot_ctx *ctx = mpctx->screenshot_ctx;
+ struct MPContext *mpctx = cmd->mpctx;
struct image_writer_opts *gopts = mpctx->opts->screenshot_image_opts;
struct image_writer_opts opts_copy = opts ? *opts : *gopts;
- screenshot_msg(ctx, MSGL_V, "Starting screenshot: '%s'", filename);
+ mp_cmd_msg(cmd, MSGL_V, "Starting screenshot: '%s'", filename);
mp_core_unlock(mpctx);
@@ -110,9 +88,9 @@ static bool write_screenshot(struct MPContext *mpctx, struct mp_image *img,
mp_core_lock(mpctx);
if (ok) {
- screenshot_msg(ctx, MSGL_INFO, "Screenshot: '%s'", filename);
+ mp_cmd_msg(cmd, MSGL_INFO, "Screenshot: '%s'", filename);
} else {
- screenshot_msg(ctx, MSGL_ERR, "Error writing screenshot!");
+ mp_cmd_msg(cmd, MSGL_ERR, "Error writing screenshot!");
}
return ok;
}
@@ -290,8 +268,11 @@ error_exit:
return NULL;
}
-static char *gen_fname(screenshot_ctx *ctx, const char *file_ext)
+static char *gen_fname(struct mp_cmd_ctx *cmd, const char *file_ext)
{
+ struct MPContext *mpctx = cmd->mpctx;
+ screenshot_ctx *ctx = mpctx->screenshot_ctx;
+
int sequence = 0;
for (;;) {
int prev_sequence = sequence;
@@ -302,9 +283,9 @@ static char *gen_fname(screenshot_ctx *ctx, const char *file_ext)
&ctx->frameno);
if (!fname) {
- screenshot_msg(ctx, MSGL_ERR, "Invalid screenshot filename "
- "template! Fix or remove the --screenshot-template "
- "option.");
+ mp_cmd_msg(cmd, MSGL_ERR, "Invalid screenshot filename "
+ "template! Fix or remove the --screenshot-template "
+ "option.");
return NULL;
}
@@ -328,8 +309,8 @@ static char *gen_fname(screenshot_ctx *ctx, const char *file_ext)
return fname;
if (sequence == prev_sequence) {
- screenshot_msg(ctx, MSGL_ERR, "Can't save screenshot, file '%s' "
- "already exists!", fname);
+ mp_cmd_msg(cmd, MSGL_ERR, "Can't save screenshot, file '%s' "
+ "already exists!", fname);
talloc_free(fname);
return NULL;
}
@@ -441,11 +422,7 @@ void cmd_screenshot_to_file(void *p)
struct MPContext *mpctx = cmd->mpctx;
const char *filename = cmd->args[0].v.s;
int mode = cmd->args[1].v.i;
- bool osd = cmd->msg_osd;
- screenshot_ctx *ctx = mpctx->screenshot_ctx;
struct image_writer_opts opts = *mpctx->opts->screenshot_image_opts;
- bool old_osd = ctx->osd;
- ctx->osd = osd;
char *ext = mp_splitext(filename, NULL);
int format = image_writer_format_from_ext(ext);
@@ -453,13 +430,12 @@ void cmd_screenshot_to_file(void *p)
opts.format = format;
bool high_depth = image_writer_high_depth(&opts);
struct mp_image *image = screenshot_get(mpctx, mode, high_depth);
- ctx->osd = old_osd;
if (!image) {
- screenshot_msg(ctx, MSGL_ERR, "Taking screenshot failed.");
+ mp_cmd_msg(cmd, MSGL_ERR, "Taking screenshot failed.");
cmd->success = false;
return;
}
- cmd->success = write_screenshot(mpctx, image, filename, &opts);
+ cmd->success = write_screenshot(cmd, image, filename, &opts);
talloc_free(image);
}
@@ -470,7 +446,6 @@ void cmd_screenshot(void *p)
int mode = cmd->args[0].v.i & 3;
bool each_frame_toggle = (cmd->args[0].v.i | cmd->args[1].v.i) & 8;
bool each_frame_mode = cmd->args[0].v.i & 16;
- bool osd = cmd->msg_osd;
screenshot_ctx *ctx = mpctx->screenshot_ctx;
@@ -492,20 +467,18 @@ void cmd_screenshot(void *p)
cmd->success = false;
- ctx->osd = osd;
-
struct image_writer_opts *opts = mpctx->opts->screenshot_image_opts;
bool high_depth = image_writer_high_depth(opts);
struct mp_image *image = screenshot_get(mpctx, mode, high_depth);
if (image) {
- char *filename = gen_fname(ctx, image_writer_file_ext(opts));
+ char *filename = gen_fname(cmd, image_writer_file_ext(opts));
if (filename)
- cmd->success = write_screenshot(mpctx, image, filename, NULL);
+ cmd->success = write_screenshot(cmd, image, filename, NULL);
talloc_free(filename);
} else {
- screenshot_msg(ctx, MSGL_ERR, "Taking screenshot failed.");
+ mp_cmd_msg(cmd, MSGL_ERR, "Taking screenshot failed.");
}
talloc_free(image);