Skip to content

Commit

Permalink
player: do not let pseudo-gui override user config settings
Browse files Browse the repository at this point in the history
Seems like this confused users quite often.

Instead of --profile=pseudo-gui, --player-operation-mode=pseudo-gui now
has to be used to invoke pseudo GUI mode. The old way still works, and
still behaves in the old way.
  • Loading branch information
wm4 committed Sep 23, 2016
1 parent f0fd663 commit 9eef41d
Show file tree
Hide file tree
Showing 11 changed files with 42 additions and 11 deletions.
18 changes: 11 additions & 7 deletions DOCS/man/mpv.rst
Original file line number Diff line number Diff line change
Expand Up @@ -736,10 +736,13 @@ Currently this happens only in the following cases:
or file associations provided by desktop environments)
- if started from explorer.exe on Windows (technically, if it was started on
Windows, and all of the stdout/stderr/stdin handles are unset)
- manually adding ``--profile=pseudo-gui`` to the command line
- started out of the bundle on OSX
- you can add ``--profile=pseudo-gui`` to the command line, but it will behave
subtly differently (since mpv 0.22.0)

This mode implicitly adds ``--profile=pseudo-gui`` to the command line, with
the ``pseudo-gui`` profile being predefined with the following contents:
This mode implicitly performs the same action as ``--profile=pseudo-gui``, but
roughly before config files are loaded and the command line is applied. The
``pseudo-gui`` profile is predefined with the following contents:

::

Expand All @@ -749,11 +752,12 @@ the ``pseudo-gui`` profile being predefined with the following contents:
idle=once
screenshot-directory=~~desktop/

This follows the mpv config file format. To customize pseudo-GUI mode, you can
put your own ``pseudo-gui`` profile into your ``mpv.conf``. This profile will
enhance the default profile, rather than overwrite it.
.. warning::

The profile always overrides other settings in ``mpv.conf``.
Currently, you can extend the ``pseudo-gui`` profile in the config file the
normal way. This is deprecated. In future mpv releases, the behavior might
change, and not apply your additional settings, and/or use a different
profile name.


.. include:: options.rst
Expand Down
6 changes: 6 additions & 0 deletions DOCS/man/options.rst
Original file line number Diff line number Diff line change
Expand Up @@ -521,6 +521,12 @@ Program Behavior
``--ytdl-raw-options=username=user,password=pass``
``--ytdl-raw-options=force-ipv6=``

``--player-operation-mode=<cplayer|pseudo-gui>``
For enabling "pseudo GUI mode", which means that the defaults for some
options are changed. This option should not normally be used directly, but
only by mpv internally, or mpv-provided scripts, config files, or .desktop
files.

Video
-----

Expand Down
2 changes: 1 addition & 1 deletion TOOLS/osxbundle/mpv.app/Contents/Resources/mpv.conf
Original file line number Diff line number Diff line change
@@ -1 +1 @@
profile=pseudo-gui
player-operation-mode=pseudo-gui
2 changes: 1 addition & 1 deletion etc/mpv.desktop
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ Comment[zh-CN]=播放电影和歌曲
Comment[zh-TW]=播放電影和歌曲
Icon=mpv
TryExec=mpv
Exec=mpv --profile=pseudo-gui -- %U
Exec=mpv --player-operation-mode=pseudo-gui -- %U
Terminal=false
Categories=AudioVideo;Audio;Video;Player;TV;
MimeType=application/ogg;application/x-ogg;application/sdp;application/smil;application/x-smil;application/streamingmedia;application/x-streamingmedia;application/vnd.rn-realmedia;application/vnd.rn-realmedia-vbr;audio/aac;audio/x-aac;audio/m4a;audio/x-m4a;audio/mp1;audio/x-mp1;audio/mp2;audio/x-mp2;audio/mp3;audio/x-mp3;audio/mpeg;audio/x-mpeg;audio/mpegurl;audio/x-mpegurl;audio/mpg;audio/x-mpg;audio/rn-mpeg;audio/ogg;audio/scpls;audio/x-scpls;audio/vnd.rn-realaudio;audio/wav;audio/x-pn-windows-pcm;audio/x-realaudio;audio/x-pn-realaudio;audio/x-ms-wma;audio/x-pls;audio/x-wav;video/mpeg;video/x-mpeg;video/x-mpeg2;video/mp4;video/msvideo;video/x-msvideo;video/ogg;video/quicktime;video/vnd.rn-realvideo;video/x-ms-afs;video/x-ms-asf;video/x-ms-wmv;video/x-ms-wmx;video/x-ms-wvxvideo;video/x-avi;video/x-fli;video/x-flv;video/x-theora;video/x-matroska;video/webm;audio/x-flac;audio/x-vorbis+ogg;video/x-ogm+ogg;audio/x-shorten;audio/x-ape;audio/x-wavpack;audio/x-tta;audio/AMR;audio/ac3;video/mp2t;audio/flac;audio/mp4;
Expand Down
1 change: 1 addition & 0 deletions libmpv/client.h
Original file line number Diff line number Diff line change
Expand Up @@ -426,6 +426,7 @@ mpv_handle *mpv_create(void);
* - input-conf
* - load-scripts
* - script
* - player-operation-mode
* - priority (win32)
* - input-app-events (OSX)
* - all encoding mode options
Expand Down
7 changes: 7 additions & 0 deletions options/m_config.c
Original file line number Diff line number Diff line change
Expand Up @@ -658,6 +658,10 @@ static int handle_set_opt_flags(struct m_config *config,
if ((flags & M_SETOPT_PRESERVE_CMDLINE) && co->is_set_from_cmdline)
set = false;

if ((flags & M_SETOPT_NO_OVERWRITE) &&
(co->is_set_from_cmdline || co->is_set_from_config))
set = false;

if ((flags & M_SETOPT_NO_FIXED) && (optflags & M_OPT_FIXED))
return M_OPT_INVALID;

Expand All @@ -680,6 +684,9 @@ void m_config_mark_co_flags(struct m_config_option *co, int flags)
{
if (flags & M_SETOPT_FROM_CMDLINE)
co->is_set_from_cmdline = true;

if (flags & M_SETOPT_FROM_CONFIG_FILE)
co->is_set_from_config = true;
}

// Unlike m_config_set_option_raw() this does not go through the property layer
Expand Down
2 changes: 2 additions & 0 deletions options/m_config.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ struct mp_log;
struct m_config_option {
bool is_hidden : 1; // Does not show up in help
bool is_set_from_cmdline : 1; // Set by user from command line
bool is_set_from_config : 1; // Set by a config file
bool is_set_locally : 1; // Has a backup entry
bool warning_was_printed : 1;
int16_t shadow_offset; // Offset into m_config_shadow.data
Expand Down Expand Up @@ -155,6 +156,7 @@ enum {
M_SETOPT_PRESERVE_CMDLINE = 32, // Don't set if already marked as FROM_CMDLINE
M_SETOPT_NO_FIXED = 64, // Reject M_OPT_FIXED options
M_SETOPT_NO_PRE_PARSE = 128, // Reject M_OPT_PREPARSE options
M_SETOPT_NO_OVERWRITE = 256, // Skip options marked with FROM_*
};

// Flags for safe option setting during runtime.
Expand Down
4 changes: 4 additions & 0 deletions options/options.c
Original file line number Diff line number Diff line change
Expand Up @@ -250,6 +250,10 @@ const m_option_t mp_opts[] = {
OPT_FLAG("list-properties", property_print_help,
CONF_NOCFG | M_OPT_FIXED | M_OPT_NOPROP),

OPT_CHOICE("player-operation-mode", operation_mode,
M_OPT_FIXED | M_OPT_PRE_PARSE | M_OPT_NOPROP,
({"cplayer", 0}, {"pseudo-gui", 1})),

OPT_FLAG("shuffle", shuffle, 0),

// ------------------------- common options --------------------
Expand Down
2 changes: 2 additions & 0 deletions options/options.h
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,8 @@ typedef struct MPOpts {
int msg_time;
char *log_file;

int operation_mode;

char **reset_options;
char **script_files;
char **script_opts;
Expand Down
6 changes: 4 additions & 2 deletions osdep/main-fn-win.c
Original file line number Diff line number Diff line change
Expand Up @@ -67,8 +67,10 @@ int wmain(int argc, wchar_t *argv[])
// Build mpv's UTF-8 argv, and add the pseudo-GUI profile if necessary
if (argv[0])
MP_TARRAY_APPEND(NULL, argv_u8, argv_len, mp_to_utf8(argv_u8, argv[0]));
if (gui)
MP_TARRAY_APPEND(NULL, argv_u8, argv_len, "--profile=pseudo-gui");
if (gui) {
MP_TARRAY_APPEND(NULL, argv_u8, argv_len,
"--player-operation-mode=pseudo-gui");
}
for (int i = 1; i < argc; i++)
MP_TARRAY_APPEND(NULL, argv_u8, argv_len, mp_to_utf8(argv_u8, argv[i]));
MP_TARRAY_APPEND(NULL, argv_u8, argv_len, NULL);
Expand Down
3 changes: 3 additions & 0 deletions player/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -399,6 +399,9 @@ int mp_initialize(struct MPContext *mpctx, char **options)

mp_print_version(mpctx->log, false);

if (opts->operation_mode == 1)
m_config_set_profile(mpctx->mconfig, "pseudo-gui", M_SETOPT_NO_OVERWRITE);

mp_parse_cfgfiles(mpctx);

if (options) {
Expand Down

0 comments on commit 9eef41d

Please sign in to comment.