aboutsummaryrefslogtreecommitdiffhomepage
path: root/input
Commit message (Collapse)AuthorAge
...
* command: extend revert_seek commandGravatar wm42014-12-17
| | | | | "revert_seek mark" basically forces the seekback point. It's basically a one-way bookmark.
* client API: be more lenient about mpv_suspend/resume mismatchesGravatar wm42014-12-15
| | | | | | | | | | | | Before this commit, this was defined to trigger undefined behavior. This was nice because it required less code; but on the other hand, Lua as well as IPC support had to check these things manually. Do it directly in the API to avoid code duplication, and to make the API more robust. (The total code size still grows, though...) Since all of the failure cases were originally meant to ruin things forever, there is no way to return error codes. So just print the errors.
* pipe-win32: possible fix for Windows XP deadlockGravatar James Ross-Gowan2014-12-11
| | | | | This fixes a hang with the VirtualBox OpenGL drivers. It might help with #1325 as well.
* input: add a hack to fix keyboard navigation with dvd/bd menuGravatar wm42014-12-04
| | | | | | | | | | If the user has LEFT/RIGHT/etc. bound in his input.conf, then these were overriding the menu keys in dvdnav mode. This hack works because the dvdnav crap happens to be the only user of MP_INPUT_ON_TOP. If it finds a default key binding in the dvdnav menu section, it will use that, instead of continuing search and possibly finding the user key bindings meant for normal playback.
* input, lua: make removing key bindings workGravatar wm42014-12-03
| | | | | | This just kept adding bindings to the input section, rather than defining it. One bad effect was that mp.remove_key_binding() in Lua didn't work.
* Do not call strerror()Gravatar wm42014-11-26
| | | | | | | | | | | | | | | | | | | | | | | | | ...because everything is terrible. strerror() is not documented as having to be thread-safe by POSIX and C11. (Which is pretty much bullshit, because both mandate threads and some form of thread-local storage - so there's no excuse why implementation couldn't implement this in a thread-safe way. Especially with C11 this is ridiculous, because there is no way to use threads and convert error numbers to strings at the same time!) Since we heavily use threads now, we should avoid unsafe functions like strerror(). strerror_r() is in POSIX, but GNU/glibc deliberately fucks it up and gives the function different semantics than the POSIX one. It's a bit of work to convince this piece of shit to expose the POSIX standard function, and not the messed up GNU one. strerror_l() is also in POSIX, but only since the 2008 standard, and thus is not widespread. The solution is using avlibc (libavutil, by its official name), which handles the unportable details for us, mostly. We avoid some pain.
* input: simplifyGravatar wm42014-11-24
|
* lua: always handle key repeat on the script sideGravatar wm42014-11-24
| | | | | | Simpler, and leaves the decision to repeat or not fully to the script (instead of requiring the user to care about it when remapping a script binding).
* lua, ipc: remove leftoversGravatar wm42014-11-24
| | | | | | MPV_EVENT_SCRIPT_INPUT_DISPATCH is now unused/deprecated. Also remove a debug-print from defaults.lua.
* command: don't queue framestepsGravatar wm42014-11-23
| | | | | If repeated framestep commands are sent, just unpause the player, instead of playing N frames for N repeated commands.
* input, lua: redo input handlingGravatar wm42014-11-23
| | | | | Much of it is the same, but now there's the possibility to distinguish key down/up events in the Lua API.
* input: set mouse area by default for all inputGravatar wm42014-11-23
| | | | | | | | | | Otherwise, mouse button bindings added by mp.add_key_binding() would be ignored. It's possible that this "breaks" some older scripts using undocumented Lua script functions, but it should be safe otherwise. Fixes #1283.
* Remove some unneeded NULL checksGravatar wm42014-11-21
| | | | Found by Coverity; also see commit 85fb2af3.
* ipc: fix confusion of write() return value and errnoGravatar wm42014-11-21
| | | | Found by Coverity.
* input: add a prefix to make any binding act on key repeatGravatar wm42014-11-20
| | | | | | The fact that it's a generic command prefix that is parsed even when using the client API is a bit unclean (because this flag makes sense for actual key-bindings only), but it's less code this way.
* command: add drop_buffersGravatar wm42014-11-20
| | | | | | | | | | | | | | | This command was actually requested on IRC ages ago, but I forgot about it. The main purpose is that the decoding state can be reset without issuing a seek, in particular in situations where you can't seek. This restarts decoding from the middle of the packet stream; since it discards the packet buffer intentionally, and the decoder will typically not output "incomplete" frames until it has recovered, it can skip a large amount of data. It doesn't clear the byte stream cache - I'm not sure if it should.
* command: add an ab_loop commandGravatar wm42014-11-18
| | | | | | As suggested in #1241; to make using the feature easier. Also add better OSD-formatting for the ab-loop-a/b properties.
* ipc: make sure --input-file=/dev/stdin always worksGravatar wm42014-11-07
| | | | It's not necessarily available on Unix systems other than Linux (sigh).
* ipc: make it possible to receive log messagesGravatar wm42014-11-01
| | | | | The receiving part was implemented, but since no messages are enabled by default, it couldn't be used.
* ipc: add a command to retrieve API versionGravatar wm42014-11-01
|
* ipc: verify resume/suspend commandsGravatar wm42014-11-01
| | | | | Calling mpv_resume() too often is considered an API usage violation, and will trigger an internal assertion somewhere.
* command: don't require whitespace before ';' or '#'Gravatar wm42014-10-31
| | | | | | | This change is probably too simplistic, but most things appear to work, so I don't care about that now. Fixes #1232.
* input: cascade-load input.confGravatar wm42014-10-29
| | | | | If there are several input.confs in the set of valid config paths, load them all.
* audio: add command/function to reload audio outputGravatar wm42014-10-27
| | | | | Anticipated use: simple solution for dealing with audio APIs which request configuration changes via events.
* input: resolve ~ and similar for --input-fileGravatar wm42014-10-24
| | | | Because why not.
* command: fix debug outputGravatar wm42014-10-24
| | | | It was a bit ugly/annoying.
* command: print executed commands with -vGravatar wm42014-10-23
|
* command: add a "cached" mode to sub_addGravatar wm42014-10-23
| | | | | This avoids reloading a subtitle if it was already added. In all cases, the subtitle is selected.
* command: make trailing sub_add actually optionalGravatar wm42014-10-22
| | | | This was always intended. Also fixes subtitle-file drag & drop.
* command: extend sub_add commandGravatar wm42014-10-21
|
* Set thread name for debuggingGravatar wm42014-10-19
| | | | | | | | | | Especially with other components (libavcodec, OSX stuff), the thread list can get quite populated. Setting the thread name helps when debugging. Since this is not portable, we check the OS variants in waf configure. old-configure just gets a special-case for glibc, since doing a full check here would probably be a waste of effort.
* ipc: skip empty and commented linesGravatar wm42014-10-19
|
* ipc: accept both JSON and "old" commandsGravatar wm42014-10-19
| | | | Minimizes the differences between --input-file and --input-unix-socket.
* ipc: fix minor error cleanup issuesGravatar wm42014-10-19
| | | | | | | | | | | | | | The ipc_thread can exit any time, and will free the mp_ipc_ctx when doing this, leaving a dangling pointer. This was somewhat handled in the original commit by setting mpctx->ipc_ctx to NULL when the thread exited, but that was still a race condition. Handle it by freeing most things after joining the ipc_thread. This means some resources will not be freed until player exit, but that should be ok (it's an exceptional error situation). Also, actually close the pipe FDs in mp_init_ipc() on another error path.
* ipc: decouple from MPContextGravatar wm42014-10-19
| | | | Just a minor refactor to keep unneeded dependencies on the core low.
* ipc: fix a small memory leakGravatar wm42014-10-17
|
* input: implement --input-file on unix using the IPC supportGravatar Alessandro Ghedini2014-10-17
|
* input: implement JSON-based IPC protocolGravatar Alessandro Ghedini2014-10-17
|
* input: don't add weird padding when formatting keycodeGravatar wm42014-10-17
| | | | No idea what this was for. It has no purpose and looks weird.
* command: add a mechanism to allow scripts to intercept file loadsGravatar wm42014-10-16
| | | | | | | | | | | | | | | | | | | | | | | A vague idea to get something similar what libquvi did. Undocumented because it might change a lot, or even be removed. To give an idea what it does, a Lua script could do the following: -- type ID priority mp.commandv("hook_add", "on_load", 0, 0) mp.register_script_message("hook_run", function(param, param2) -- param is "0", the user-chosen ID from the hook_add command -- param2 is the magic value that has to be passed to finish -- the hook mp.resume_all() -- do something, maybe set options that are reset on end: mp.set_property("file-local-options/name", "value") -- or change the URL that's being opened: local url = mp.get_property("stream-open-filename") mp.set_property("stream-open-filename", url .. ".png") -- let the player (or the next script) continue mp.commandv("hook_ack", param2) end)
* input: remove some unneeded codeGravatar wm42014-10-10
|
* input: cosmetics: move codeGravatar wm42014-10-10
|
* input: use mpv_node parser for char** command parsersGravatar wm42014-10-10
| | | | Minor simplification, also drops some useless stuff.
* input: add a function to parse mpv_node as commandGravatar wm42014-10-10
| | | | For future client API enhancements.
* libmpv/cocoa: don't start the event monitorGravatar Stefano Pigozzi2014-10-09
| | | | | | The event monitor is used to get keyboard events when there is no window, but since it is a global monitor to the current process, we don't want it in a library setting.
* client API: rename --input-x11-keyboard to --input-vo-keyboardGravatar wm42014-10-09
| | | | | Apparently we need this for Cocoa too. (The option was X11 specific in the hope that only X11 would need this hack.)
* client API, X11: change default keyboard input handling againGravatar wm42014-09-28
| | | | | | | | | | | | | | | | | | | | | | | | | | Commit 64b7811c tried to do the "right thing" with respect to whether keyboard input should be enabled or not. It turns out that X11 does something stupid by design. All modern toolkits work around this native X11 behavior, but embedding breaks these workarounds. The only way to handle this correctly is the XEmbed protocol. It needs to be supported by the toolkit, and probably also some mpv support. But Qt has inconsistent support for it. In Qt 4, a X11 specific embedding widget was needed. Qt 5.0 doesn't support it at all. Qt 5.1 apparently supports it via QWindow, but if it really does, I couldn't get it to work. So add a hack instead. The new --input-x11-keyboard option controls whether mpv should enable keyboard input on the X11 window or not. In the command line player, it's enabled by default, but in libmpv it's disabled. This hack has the same problem as all previous embedding had: move the mouse outside of the window, and you don't get keyboard input anymore. Likewise, mpv will steal all keyboard input from the parent application as long as the mouse is inside of the mpv window. Also see issue #1090.
* input: copy options automaticallyGravatar wm42014-09-27
| | | | | | Originally, all options were copied to ensure that input_ctx remins thread-safe, even if options are changed asynchronously. But this got a bit inconsistent. Copy them automatically and reduce some weirdness.
* input: separate creation and loading of configGravatar wm42014-09-27
| | | | | | | | | | | Until now, creating the input_ctx was delayed until the command line and config files were parsed. Separate creation and loading so that input_ctx is available from start. This should make it possible to simplify some things. For example, some complications with Cocoa were apparently only because input_ctx was available only "later". (Although I'm not sure if this is still relevant, or if the Cocoa code should even be organized this way.)
* input: explain why we use semaphoresGravatar wm42014-09-20
| | | | Also switch function names for better self-documentation.