summaryrefslogtreecommitdiffstats
path: root/input/input.h
Commit message (Collapse)AuthorAgeFilesLines
* input: rework event reading and command queuingUoti Urpala2011-07-171-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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] typedefsUoti Urpala2011-07-161-33/+20
| | | | | | | | | | | | 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 commentsUoti Urpala2011-07-161-184/+181
|
* input: rewrite -key-fifo-size limiting logicUoti Urpala2011-05-021-0/+3
| | | | | | | | | | | | | | | | | | 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: move all key code lists to input/keycodes.hUoti Urpala2011-05-021-7/+0
| | | | | | | | | | | | | 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.
* Add a simple capture feature (-capture)Uoti Urpala2010-11-021-0/+1
| | | | | | | | | | | | | | | | | 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 optionsreimar2010-11-021-0/+1
| | | | | | | | | 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
* Merge svn changes up to r31033Uoti Urpala2010-04-261-0/+8
|\
| * Add slave commands for loading and unloading audio filters at runtime.cehoyos2010-04-111-0/+7
| | | | | | | | | | | | | | 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.cehoyos2010-04-091-0/+1
| | | | | | | | | | | | | | 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
| * Declare mp_input_register_options() in input/input.h.diego2010-02-141-0/+4
| | | | | | | | | | | | | | This also avoids a forward declaration in mplayer.c. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30572 b3059339-0415-0410-9bf9-f77b7e298cf2
| * whitespace cosmetics: Remove all trailing whitespace.diego2009-05-131-2/+2
| | | | | | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29305 b3059339-0415-0410-9bf9-f77b7e298cf2
* | input: remove unused "paused" arguments from some functionsUoti Urpala2010-04-251-2/+2
| |
* | commands: Add set_property_osd and step_property_osdUoti Urpala2009-09-191-0/+2
| |
* | Remove the internal GUIAnton Khirnov2009-07-071-13/+1
| | | | | | | | | | | | | | | | | | The GUI is badly designed and too closely coupled to the internal details of other code. The GUI code is in bad shape and unmaintained for years. There is no indication that anyone would maintain it in the future either. Even if someone did volunteer to implement a better integrated GUI having the current code in the tree probably wouldn't help much. So get rid of it.
* | Remove trailing whitespace from most filesUoti Urpala2009-07-071-2/+2
| |
* | Merge svn changes up to r28149Uoti Urpala2008-12-141-0/+18
|\|
| * Add standard GPL license header.diego2008-12-131-0/+18
| | | | | | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28146 b3059339-0415-0410-9bf9-f77b7e298cf2
* | Merge svn changes up to r28103Uoti Urpala2008-12-061-1/+1
|\|
| * Re-add "extern"s incorrectly removed in r28085reimar2008-12-041-1/+1
| | | | | | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28088 b3059339-0415-0410-9bf9-f77b7e298cf2
* | Merge svn changes up to r28087Uoti Urpala2008-12-041-1/+1
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: command.c libao2/ao_ivtv.c libao2/ao_v4l2.c libmpcodecs/dec_video.h libvo/aspect.h libvo/sub.c libvo/sub.h libvo/vo_directx.c libvo/vo_macosx.m libvo/vo_quartz.c mp_core.h mplayer.c mplayer.h osdep/getch2.h osdep/timer.h
| * Get rid of pointless 'extern' keywords.diego2008-12-031-1/+1
| | | | | | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@28085 b3059339-0415-0410-9bf9-f77b7e298cf2
* | Move some declarations from mplayer.c to proper headersUoti Urpala2008-08-121-0/+3
| | | | | | | | | | Declare mp_input_register_options in input.h and xscreensaver_heartbeat in x11_common.h.
* | Merge svn changes up to r27123Uoti Urpala2008-06-231-137/+140
|\| | | | | | | | | | | | | Conflicts: libmenu/menu_filesel.c libmenu/menu_pt.c
| * Change DVDNAV command key names.ben2008-06-191-9/+10
| | | | | | | | | | | | | | | | Parameters now use a string much more intuitive than previous int value. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@27100 b3059339-0415-0410-9bf9-f77b7e298cf2
| * Group all input command defines in one big enumben2008-06-181-128/+130
| | | | | | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@27098 b3059339-0415-0410-9bf9-f77b7e298cf2
* | Merge svn changes up to r26979Uoti Urpala2008-06-041-0/+1
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Most of the conflicts are trivial. Conflicts: Makefile cfg-mplayer.h input/input.c libmenu/vf_menu.c libmpcodecs/dec_video.c libmpcodecs/vf_expand.c libmpcodecs/vf_vo.c libmpdemux/demux_mkv.c libmpdemux/demuxer.c libmpdemux/demuxer.h libvo/vo_directfb2.c libvo/vo_gl.c libvo/vo_winvidix.c libvo/vo_xv.c libvo/vo_xvidix.c libvo/vo_xvmc.c libvo/x11_common.c mplayer.c osdep/timer-linux.c stream/cache2.c
| * Add a slave command to stop stream playback.ben2008-05-271-0/+1
| | | | | | | | | | | | | | | | | | Mostly useful when used with -idle mode. Patch by Mathieu Schroeter ( mathieu dot schroeter at gamesover dot ch ) git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@26909 b3059339-0415-0410-9bf9-f77b7e298cf2
* | Move input options to option structUoti Urpala2008-04-301-1/+2
| |
* | input: Move command filedescriptor list to context structUoti Urpala2008-04-301-4/+3
| |
* | input: Move cmd_queue to context structUoti Urpala2008-04-301-3/+2
| | | | | | | | Menu instances now also need a input context pointer to queue commands.
* | input: Move key filedescriptor list to context structUoti Urpala2008-04-301-4/+4
| | | | | | | | | | The context variable is now passed to VOs too as it's now needed to add a callback on the X filedescriptor.
* | input.[ch]: Move some type definitions from .h to .cUoti Urpala2008-04-301-10/+0
| | | | | | | | These aren't used outside input.c.
* | input: Move command bind variables to context structUoti Urpala2008-04-301-4/+2
| |
* | Create a context for input.c stateUoti Urpala2008-04-301-6/+6
| | | | | | | | | | | | | | | | | | Start moving static variables to a context struct. Only autorepeat state is moved to the struct in this commit. mp_input_check_interrupt now requires the context variable. Change stream functions to pass it. It's still stored in a static variable in stream/.
* | input: Remove separate mp_input_add_event_fdUoti Urpala2008-04-291-6/+2
| | | | | | | | | | | | | | | | Use the same mp_input_add_key_fd for all uses and add a context argument to its callback that was before only in the event fd callbacks. Instead of checking in input.c whether keys were inserted to the keypress FIFO during the callback do the check in the callback before returning and set return value accordingly.
* | Add a context argument to mp_input_add_event_fd callbackUoti Urpala2008-04-231-1/+1
|/
* Add MPLAYER_ prefix to multiple inclusion guards.diego2008-02-221-3/+3
| | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@26061 b3059339-0415-0410-9bf9-f77b7e298cf2
* Add new command to switch between dvdnav titlesben2008-01-241-0/+1
| | | | | | | | Based on parts of dvdnav monster patches from Otvos Attila git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@25845 b3059339-0415-0410-9bf9-f77b7e298cf2
* Add ass_use_margins command and property to shift subtitles to margins and backeugeni2008-01-231-0/+1
| | | | | | | on the fly. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@25842 b3059339-0415-0410-9bf9-f77b7e298cf2
* Do not use exit_player in the signal handler, this code just can notreimar2008-01-081-0/+2
| | | | | | | | | be called from a signal handler. Instead only make the input system generate quit commands for the first CTRL+C and otherwise do getch2_disable and exit. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@25651 b3059339-0415-0410-9bf9-f77b7e298cf2
* properties to change angle; patch by oattila chello hunicodvb2008-01-051-0/+1
| | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@25604 b3059339-0415-0410-9bf9-f77b7e298cf2
* Add multiple inclusion guards to all header files that lack them.diego2008-01-011-0/+4
| | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@25581 b3059339-0415-0410-9bf9-f77b7e298cf2
* From now on, libmenu does not steal all input keys from input modules.ulion2007-12-261-1/+1
| | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@25530 b3059339-0415-0410-9bf9-f77b7e298cf2
* Add new function for parsing and queueing multi-commands separated by \n or \r.ulion2007-12-111-0/+6
| | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@25347 b3059339-0415-0410-9bf9-f77b7e298cf2
* Remove hardcoded key->cmd bindings in libmenu, support custom key bindingsulion2007-12-041-0/+3
| | | | | | | by menu config file. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@25291 b3059339-0415-0410-9bf9-f77b7e298cf2
* Support select subtitle by source, add 4 properties:ulion2007-11-251-0/+4
| | | | | | | | | | | | | 1. sub_source for current sub source (sub file, vobsub, or from demuxer). 2. sub_file for all subtitles from files. 3. sub_vobsub for all subtitles from vobsub. 4. sub_demux for all subtitles from demuxer. Now mplayer can supply a stable and clear interface to external programs using mplayer in slave mode to select a subtitle by its source and its unique id for that source printed by mplayer using -identify parameter. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@25157 b3059339-0415-0410-9bf9-f77b7e298cf2
* Add separate event input type for terminal+vouau2007-08-251-0/+4
| | | | | | | | | | | Add an input/input.c fd type whose read function takes no arguments and returns no value. If such a function reads key or command events it'll add them to the queues itself. Use this type for terminal input which was special-cased before. The event function for X11-based VOs will use the same type later. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@24152 b3059339-0415-0410-9bf9-f77b7e298cf2
* Automatic TV channels scanning ability for MPlayer.voroshil2007-08-231-0/+1
| | | | | | | Code is based on patch from Otvos Attila oattila at chello dot hu git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@24125 b3059339-0415-0410-9bf9-f77b7e298cf2
* Teletext support.voroshil2007-07-291-0/+2
| | | | | | | Part 2/5: options/slaves/configure/definitions/etc git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@23920 b3059339-0415-0410-9bf9-f77b7e298cf2
* Add a loop command and property.albeu2007-07-091-0/+1
| | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@23747 b3059339-0415-0410-9bf9-f77b7e298cf2
* Add the sub_scale property and command.albeu2007-07-091-0/+1
| | | | | | | Patch from Anatoli Marinov (anatoli [dot] marinov [at] gmail [dot] com). git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@23745 b3059339-0415-0410-9bf9-f77b7e298cf2
* Revert r23530.voroshil2007-06-211-2/+0
| | | | | | | | | r23530 breaks policy: notification was not sent to mailing list, agreements of other devs were not received. Code also should be reviewed/cleaned up/fixed. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@23593 b3059339-0415-0410-9bf9-f77b7e298cf2
* The audio balance feature implemented with af_pan.zuxy2007-06-201-0/+1
| | | | git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@23588 b3059339-0415-0410-9bf9-f77b7e298cf2
* Teletext support for tv:// (v4l and v4l2 only)voroshil2007-06-101-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | modified patch from Otvos Attila oattila at chello dot hu Module uses zvbi library for all low-level VBI operations (like I/O with vbi device, converting vbi pages into usefull vbi_page stuctures, rendering them into RGB32 images). All teletext related stuff (except properties, slave commands and rendering osd in text mode or RGB32 rendered teletext pages in spu mode) is implemented in tvi_vbi.c New properties: teletext_page - switching between pages teletext_mode - switch between on/off/opaque/transparent modes teletext_format - (currently read-only) allows to get format info (black/white,gray,text) teletext_half_page - trivial zooming (displaying top/bottom half of teletext page) New slave commands: teletext_add_dec - user interface for jumping to any page by editing page number interactively teletext_go_link - goes though links, specified on current page git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@23530 b3059339-0415-0410-9bf9-f77b7e298cf2
* implement "bind sections"voroshil2007-06-071-0/+8