aboutsummaryrefslogtreecommitdiffhomepage
path: root/input
Commit message (Collapse)AuthorAge
...
* input: rework event reading and command queuingGravatar Uoti Urpala2011-07-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Rework much of the logic related to reading from event sources and queuing commands. The two biggest architecture changes are: - The code buffering keycodes in mp_fifo.c is gone. Instead key input is now immediately fed to input.c and interpreted as commands, and then the commands are buffered instead. - mp_input_get_cmd() now always tries to read every available event from every event source and convert them to (buffered) commands. Before it would only process new events until one new command became available. Some relevant behavior changes: - Before commands could be lost when stream code called mp_input_check_interrupt() which read commands (to see if they were of types that triggered aborts during slow IO tasks) and then threw them away. This was especially an issue if cache was enabled and slow to read. Fixed - now it's possible to check whether there are queued commands which will abort playback of the current file without throwing other commands away. - mp_input_check_interrupt() now prints a message if it returns true. This is especially useful because the failures caused by aborted stream reads can trigger error messages from other code that was doing the read; the new message makes it more obvious what the cause of the subsequent error messages is. - It's now possible to again avoid making stdin non-blocking (which caused some issues) without reintroducing extra latency. The change will be done in a subsequent commit. - Event sources that do not support select() should now have somewhat lower latency in certain situations as they will be checked both before and after select()/sleep in input reading; before the sleep always happened first even if such sources already had queued input. Before the key fifo was also handled in this manner (first key triggered select, but if multiple were read then rest could be delayed; however in most cases this didn't add latency in practice as after central code started doing command handling it queried for further commands with a max sleep time of 0). - Key fifo limiting is more accurate now: it now counts actual commands intead of keycodes, and all queued keys are read immediately from input devices so they can be counted correctly. - Since keypresses are now interpreted immediately, commands which change keybindings will no longer affect following keypresses that have already been read before the command is executed. This should not be an issue in practice with current keybinding behavior.
* cleanup: remove some unnecessary input.[ch] typedefsGravatar Uoti Urpala2011-07-16
| | | | | | | | | | | | Remove some unnecessary typedefs and remove pointless mp_ prefix from some internal struct names. Change the type of the "close_func" pointers from "void f(int fd)" to "int f(int fd)" so that using standard close() there is valid. Delete some useless assert() statements. Move internal MP_MAX_KEY_DOWN define from input.h to input.c.
* cosmetics: reformat input.h, fix commentsGravatar Uoti Urpala2011-07-16
|
* input.c: remove write to buffer[-1] in parse_config()Gravatar Uoti Urpala2011-07-11
|
* cleanup: silence most of the clang warningsGravatar Clément Bœsch2011-07-09
|
* Merge branch 'mplayer1_changes'Gravatar Uoti Urpala2011-06-29
|\
* | input: clean up messages with button combination namesGravatar Uoti Urpala2011-06-29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously messages that printed key/button names would have extra names in button combinations appended after the main message, resulting in output like: No bind found for key 'MOUSE_BTN1'.-MOUSE_BTN3 Add a function that creates a complete combination name and use that for all such messages. The above example changes to: No bind found for key 'MOUSE_BTN1-MOUSE_BTN3'. Other affected messages are a input.conf parsing error message and a message about a bound command being invalid.
| * input: support up to 20 mouse buttonsGravatar reimar2011-06-29
|/ | | | | | | Increase the number of supported mouse buttons from 10 to 20. There really seem to be input devices with at least 12. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@33391 b3059339-0415-0410-9bf9-f77b7e298cf2
* input: add useful default pointer button bindingsGravatar Grigori Goronzy2011-06-14
| | | | | | Add two mouse button bindings: 1) left button double click toggles fullscreen 2) right button pauses/unpauses
* input: make slave command file descriptors nonblockingGravatar Uoti Urpala2011-05-04
| | | | | | | Neither fd 0 slave input (-slave) nor additional opened fds (-input file=X) were set to nonblocking mode as they should have been. Fix. Also rename the horribly generic USE_SELECT #define used for a specific slave input detail.
* input/joystick.c: add #include missing from 23cb829072Gravatar Uoti Urpala2011-05-03
| | | | | There was a '#include "keycodes.h"' line missing from commit 23cb829072, which broke build with --enable-joystick.
* cleanup: remove more warningsGravatar Clément Bœsch2011-05-02
|
* input: rewrite -key-fifo-size limiting logicGravatar Uoti Urpala2011-05-02
| | | | | | | | | | | | | | | | | | Instead of strictly limiting the number of total entries in the internal fifo, make the overall buffer bigger and try to limit entries based on how many bound commands they're expected to generate. Now doubleclick and button down events aren't counted for that limit. Normally the sequence down-doubleclick-up generates at most one command, so this better matches the quantity we actually want to limit. Also add a mechanism to clear the button combination state kept by input.c when the fifo is full; this avoids "stuck button" problems due to button release events being dropped. The key combination state clearing is partially based on MPlayer 1 changes by Reimar Döffinger (though overall the effects of this commit are quite different). It still doesn't make "stuck button" problems completely impossible; at least if the VO gets closed while a button was down then nothing will send a button up event or reset state.
* input: modify interpretation of doubleclick eventsGravatar Uoti Urpala2011-05-02
| | | | | | | | | | | | | The code combining button presses into multibutton commands prevented single click commands from triggering if a doubleclick event had been generated from the same button press. As a result using the mouse wheel to seek worked very badly. Special-case doubleclick events in the event interpretation code to avoid this issue. This changes the sequence of generated "keys" for press-release-press-release from MOUSE_BTN0 MOUSE_BTN0-MOUSE_BTN0_DBL MOUSE_BTN0_DBL to MOUSE_BTN0 MOUSE_BTN0_DBL MOUSE_BTN0. "Keys" like MOUSE_BTN0-MOUSE_BTN0_DBL will never be generated now; any existing configuration files using those need to be changed.
* cleanup: input.c: simplify some string handling codeGravatar Uoti Urpala2011-05-02
| | | | Replace manual loops with strspn() / strcspn().
* cleanup: reformat input.cGravatar Uoti Urpala2011-05-02
|
* input: move all key code lists to input/keycodes.hGravatar Uoti Urpala2011-05-02
| | | | | | | | | | | | | Move the definitions of all special key codes (those not passed by ASCII value) to input/keycodes.h. Before they were spread between osdep/keycodes.h, input/joystick.h, input/mouse.h and input/ar.h, plus some special values in input.h. This was especially inconvenient as the codes had to be coordinated to not conflict between the files. The change requires a bit of ugliness as appleir.c includes <linux/input.h> which contains various conflicting KEY_* definitions. Work around this by adding a special preprocessor variable which can be used to avoid defining these in keycodes.h.
* input: don't interrupt processing at unbound eventsGravatar Uoti Urpala2011-05-01
| | | | | | | | | | The input code read at most one event per input or command fd. If this event was not bound to any recognized command then no command was returned, and higher-level code could not distinguish this case from there being no pending events left. As a result unbound events would cause extra latency in event processing. Change the input code to continue reading events until it either finds one that maps to a command or hits EOF/error.
* input: sleep in event loop even if there are no input fdsGravatar Uoti Urpala2011-04-22
| | | | | | | | | The input loop select() call was only run if there was at least one input file descriptor. However other code uses the input loop to wait; this could result in the wait becoming a busy loop when running with -noconsolecontrols (without that there is at least one input fd for terminal input). Make the input loop call select() to sleep even if there are no input file descriptors.
* input: accept Shift modifier for Enter and Tab keysGravatar Uoti Urpala2011-02-05
| | | | | | Enter and Tab are the only named keys (rather than identified by the printable character they produce) with code below 256. Add a special case to recognize the Shift modifier with them.
* input: remove incorrect "CTRL" keyname alias for backspaceGravatar Uoti Urpala2011-02-05
| | | | | | | | | | | The keycodes.h file contains a KEY_CTRL define, then various control keys expressed as "KEY_CTRL + 0" and so on. Back in 2002 when the key name table in input.c was created this KEY_CTRL define was mistakenly interpreted as a key name, apparently confusing it with the Ctrl key (even though the input system didn't handle that key back then). As a result there was an incorrect key name entry with the same key code as backspace and name "CTRL". This incorrect entry was used when printing the name of the key. Delete it.
* Merge branch 'hr-seek'Gravatar Uoti Urpala2010-12-20
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * hr-seek: input: add default keybindings Shift+[arrow] for small exact seeks input: support bindings with modifier keys for X input core: audio: make ogg missing audio timing workaround more complex core: add support for precise non-keyframe-limited seeks core: add struct for queued seek info commands: add generic option -> property wrapper options: add "choice" option type, use for -pts-association-mode core: remove looping in update_video(), modify command handling a bit core: seek: use accurate seek mode with audio-only files core: avoid using sh_video->pts as "current pts" libvo: register X11 connection fd in input event system core: timing: add special handling of long frame intervals core: move central play loop to a separate function Conflicts: DOCS/tech/slave.txt
| * input: add default keybindings Shift+[arrow] for small exact seeksGravatar Uoti Urpala2010-12-20
| |
| * input: support bindings with modifier keys for X inputGravatar Uoti Urpala2010-12-20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add support for binding commands to modifier+key combinations like "Shift+Left" or "Ctrl+Alt+x", and support reading such combinations from the output window of X VOs. The recognized modifier names are Shift, Ctrl, Alt and Meta. Any combination of those and then a non-modifier key name, separated by '+', is accepted as a key name in input.conf. For non-special keys that produce characters shift is ignored as a modifier. For example "A" is handled as a key without modifiers even if you use shift to write the capital letter; 'a' vs 'A' already distinguishes the combinations with a normal keymap, and having separate 'a', 'Shift+A' and 'A' (written with caps lock for example) would bring more confusion than benefit. Currently reading the modifier+key combinations is only supported in the output window of those VOs that use x11_common.c event handling. It's not possible to input the key combinations in other VOs or in a terminal window.
| * core: add support for precise non-keyframe-limited seeksGravatar Uoti Urpala2010-12-20
| | | | | | | | | | | | | | | | | | | | | | | | | | Add support for seeking to an arbitrary non-keyframe position by decoding video starting from the previous keyframe. Whether to use this functionality when seeking is controlled by the new option -hr-seek and a new third argument to the "seek" command. The default is to use it for absolute seeks (like chapter seeks) but not for relative ones. Because there's currently no support for cutting encoded audio some desync is expected if encoded audio passthrough is used. Currently precise seeks always go to the first frame with timestamp equal to or greater than the target position; there's no support for "matching or earlier" backwards seeks at frame level.
* | cosmetics: remove unused code, small formatting tweaksGravatar Uoti Urpala2010-12-20
| |
* | commands: Allow cycling subtitles backwards with 'J'Gravatar reimar2010-12-16
|/ | | | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32680 b3059339-0415-0410-9bf9-f77b7e298cf2 git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32714 b3059339-0415-0410-9bf9-f77b7e298cf2
* cleanup: remove NULL checks before free() all over the codeGravatar cboesch2010-11-14
| | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32624 b3059339-0415-0410-9bf9-f77b7e298cf2
* options: add OPT_MAKE_FLAGS macro, creates "opt/noopt" flag pairGravatar Clément Bœsch2010-11-04
|
* Add a simple capture feature (-capture)Gravatar Uoti Urpala2010-11-02
| | | | | | | | | | | | | | | | | If a specified key is pressed during playback, the current stream is captured to a file, similar to what -dumpstream achieves. original patch by Pásztor Szilárd, don tricon hu Taken from the following svn commits, but with several fixes and modifications (one obvious user-visible difference is that the default key binding is 'C', not 'c'): git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32524 b3059339-0415-0410-9bf9-f77b7e298cf2 git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32529 b3059339-0415-0410-9bf9-f77b7e298cf2 git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32530 b3059339-0415-0410-9bf9-f77b7e298cf2
* new slave command: af_cmdline, for changing audio filter optionsGravatar reimar2010-11-02
| | | | | | | | | Add experimental af_cmdline slave command to allow changing filter options at runtime. Patch by Adrian Stutz [adrian sttz ch] git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32505 b3059339-0415-0410-9bf9-f77b7e298cf2
* input: try to open "-input -file=" file even if stat() failsGravatar reimar2010-11-02
| | | | | | | | | | | Do not fail opening a -input file= file just because stat failed, but try to call "open" in any case. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32497 b3059339-0415-0410-9bf9-f77b7e298cf2 Make code clearer by putting the "special case hack" inside the if. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32499 b3059339-0415-0410-9bf9-f77b7e298cf2
* cosmetics: input/ar.c: Mark is_mplayer_front() staticGravatar diego2010-11-02
| | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32153 b3059339-0415-0410-9bf9-f77b7e298cf2
* Merge svn changes up to r31256Gravatar Uoti Urpala2010-05-30
|\
| * Document that time argument is in milliseconds.Gravatar reimar2010-05-28
| | | | | | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31252 b3059339-0415-0410-9bf9-f77b7e298cf2
| * Drop pointles _st suffix from struct mp_cmd_filter and mp_cmd_bind_section.Gravatar diego2010-05-27
| | | | | | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31246 b3059339-0415-0410-9bf9-f77b7e298cf2
* | Merge svn changes up to r31033Gravatar Uoti Urpala2010-04-26
|\|
* | Merge svn changes up to r30967Gravatar Uoti Urpala2010-04-26
|\ \
* | | input: remove unused "paused" arguments from some functionsGravatar Uoti Urpala2010-04-25
| | |
| | * Add slave commands for loading and unloading audio filters at runtime.Gravatar cehoyos2010-04-11
| | | | | | | | | | | | | | | | | | | | | Patch by Jehan Hysseo, hysseo zemarmot net git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31030 b3059339-0415-0410-9bf9-f77b7e298cf2
| | * Add osd_show_progression: Show progress bar and elapsed/total time.Gravatar cehoyos2010-04-09
| | | | | | | | | | | | | | | | | | | | | Patch by Hugo Chargois, hugo D chargois A free fr git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31028 b3059339-0415-0410-9bf9-f77b7e298cf2
| | * Mark input-related m_option_t arrays as const.Gravatar diego2010-04-04
| |/ | | | | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31002 b3059339-0415-0410-9bf9-f77b7e298cf2
| * Rename get_path.[ch] --> path.[ch].Gravatar diego2010-03-20
| | | | | | | | | | | | | | These files now contain different functions related to path handling. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30943 b3059339-0415-0410-9bf9-f77b7e298cf2
* | Delete things related to old translation systemGravatar Uoti Urpala2010-03-10
| | | | | | | | | | Remove the help/ subdirectory, configure code to create toplevel help_mp.h, and all the '#include "help_mp.h"' lines from .c files.
* | Merge svn changes up to r30798Gravatar Uoti Urpala2010-03-10
|\|
| * Support all line ending types in mp_input_read_cmd.Gravatar reimar2010-02-27
| | | | | | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30779 b3059339-0415-0410-9bf9-f77b7e298cf2
| * Include lirc.h in lirc.c to add missing prototypes.Gravatar cehoyos2010-02-27
| | | | | | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30767 b3059339-0415-0410-9bf9-f77b7e298cf2
| * Mark some more functions that are not used outside of their files as static.Gravatar diego2010-02-18
| | | | | | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30632 b3059339-0415-0410-9bf9-f77b7e298cf2
| * Declare mp_input_register_options() in input/input.h.Gravatar diego2010-02-14
| | | | | | | | | | | | | | This also avoids a forward declaration in mplayer.c. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30572 b3059339-0415-0410-9bf9-f77b7e298cf2
* | Merge svn changes up to r29912Gravatar Uoti Urpala2009-11-16
|\|