aboutsummaryrefslogtreecommitdiffhomepage
path: root/osdep
Commit message (Collapse)AuthorAge
* macosx_application: fix regression causing crashGravatar Stefano Pigozzi2013-09-19
| | | | | 95a2151d1 introduced a crash on systems lower than 10.9 when opening files with a single argument.
* osdep/path: remove ifdefsGravatar wm42013-09-18
| | | | They're not really needed, so kill them.
* macosx: move bundle path stuff to path-macosx.mGravatar Stefano Pigozzi2013-09-18
| | | | This makes the code uniform to how stuff was handled for Windows in 1cb55ceb.
* path, win32: redo user configfile path handlingGravatar wm42013-09-18
| | | | | | | | | | | | | | | | | Remove the ifdef hell from mp_find_user_config_file(). Move the win32 specific code (for MinGW and Cygwin) to path-win.c. The behavior should be about the same, but I can't be sure due to lack of testing and because the old path.c code was hard to follow. (I expect those who care about windows will fix things, should issues pop up - sorry.) One difference is that the new code will always force MPV_HOME. It looks like the old code preferred the mpv config dir in the exe dir if it exists. Also, make sure MP_PATH_MAX has enough space, even if the equivalent wchar_t string is not 0-terminated with PATH_MAX (because apparently the winapi doesn't require this). (Actually, maybe we should just kill all uses of PATH_MAX/MP_PATH_MAX.)
* win32: add getenv() UTF-8 variantGravatar wm42013-09-18
| | | | | | | This is a bit "hard", because getenv() returns a static string, and we can't just return an allocated string. We also want getenv() to be thread-safe if possible. (If the mpv core is going to be more threaded, we sure do want the lower layers to be thread-safe as well.)
* HIDRemote: remove OS X version checksGravatar Stefano Pigozzi2013-09-17
| | | | | | Turns out that these checks were for versions of OS X that mpv doesn't even support anymore. So just remove the checks since they cause a deprecation warning.
* macosx_application: remove deprecation warning on OS X 10.9Gravatar Nyx0uf2013-09-16
| | | | | | | | | | | | GetCurrentProcess() is deprecated on 10.9. Make a universal solution by checking OS version number. get_system_version() function is the recommended Apple way of getting the OS version, since Gestalt is also deprecated (and does pretty much the same thing anyway) Updating HIDRemote.m to use a similar function would allow to get rid of the 2 other warnings.
* macosx_application: fix file opening on 10.9 (for real this time)Gravatar Stefano Pigozzi2013-09-13
| | | | | | | | I did commit 86c05655d by thinking `mpv` already removed the `mpv` from argc/argv. It actually is still there, so the argc must be 1 to check for no arguments. Thanks to @Nyx0uf for pointing out the bug and for testing on 10.9!
* macosx_application: fix file opening on OS X 10.9 (hopefully)Gravatar Stefano Pigozzi2013-09-12
| | | | | | | | File opening through Finder, apparently drops `--psn` arguments on Mavericks and just uses no args. Modify the code to account for that case. This wasn't tested on 10.9 itself (I don't have a paid dev account), but it *should* work if I understood the problem correctly.
* macosx_application: handle mpv:// linksGravatar Stefano Pigozzi2013-09-07
| | | | | | | Pretty useful for people writing userscripts for web browsers. Links starting with 'mpv://' are forwarded to the mpv OSX bundle. The leading 'mpv://' is stripped from the recived url and the rest of the string is inserted as is in the playlist.
* macosx_application: handle URL events as fileopen eventsGravatar Stefano Pigozzi2013-09-07
| | | | | This allows to open URLs directly with mpv. This is useful for streaming and libquvi supported sites.
* macosx_events: fix modifiers handling with media keysGravatar Stefano Pigozzi2013-09-05
| | | | | | This was caused by a typo. Regression from add7c2955df. Fixes #213
* macosx_events: send a `release all` after key up eventsGravatar Stefano Pigozzi2013-09-02
| | | | | | | | This prevents keys to become stuck due to changing keyboard modifiers during the key down. Not the prettiest approach but event `x11_common` does it like this. Fixes #210
* macosx_events: remove duplicationGravatar Stefano Pigozzi2013-09-02
| | | | refactoring: extract method `handleMPKey:withMask:`
* cocoa: enqueue events only if input context is presentGravatar Stefano Pigozzi2013-09-01
|
* osx: use MP_KEY_* instead of MK_* for media keysGravatar Stefano Pigozzi2013-09-01
| | | | | In 213ad5d6c I added `MK_*` key bindings overlooking the fact that mpv already has `MP_KEY_*` for media keys.
* cocoa: let the core handle key repeatsGravatar Stefano Pigozzi2013-08-30
| | | | | Report key down and key up modifiers to the core so that it can issue it's own key repeats (instead of relying on Cocoa's ones).
* macosx: remove platform specific input queueGravatar Stefano Pigozzi2013-08-13
| | | | | Since last commit the input queue in the core is thread safe, so there is no need for all this platform specific stuff anymore.
* core: move contents to mpvcore (2/2)Gravatar Stefano Pigozzi2013-08-06
| | | | Followup commit. Fixes all the files references.
* mpv.rc: update Windows iconGravatar James Ross-Gowan2013-07-30
| | | | Based on the OSX bundle icon.
* getch2: Load the "ce", "ks" and "ke" caps into a static bufferGravatar Diogo Franco (Kovensky)2013-07-26
| | | | | | Fixes reports of printing of garbage (or anything else) other than clearing the status line to the end of line: the buffer returned by termcap_get could get moved, and if that happened then these 3 caps pointed to garbage.
* getch2: Deactivate getch2 on SIGINT; also handle SIGQUITGravatar Diogo Franco (Kovensky)2013-07-26
|
* getch2: Only send ESC if it was typed twiceGravatar Diogo Franco (Kovensky)2013-07-26
| | | | Avoids quitting mpv if any unknown escape is entered.
* getch2: Handle setupterm errorsGravatar Diogo Franco (Kovensky)2013-07-26
| | | | | | setupterm abort()s if it can't initialize the terminal and the last parameter is NULL; handle setupterm errors and retry with "ansi" if the TERM env var was unset.
* getch2: fix compilationGravatar wm42013-07-26
|
* getch2: Support ESC keypresses againGravatar Diogo Franco (Kovensky)2013-07-25
| | | | | | Due to the termcap matching and the hardcoded fallbacks, the ESC keypress has to be followed by another non-matching keypress (such as another ESC) for it to be accepted. We drop the second ESC in case it was typed twice.
* getch2: Doing it right this timeGravatar Diogo Franco (Kovensky)2013-07-25
| | | | | getch2_pos should be set to 1, not 0, when backtracking. Avoids the possible infinite loop but correctly.
* Revert "getch2: Avoid possible infinite loop"Gravatar Diogo Franco (Kovensky)2013-07-25
| | | | This reverts commit ba95aed6f1067dc577d8813625233982157167d9.
* getch2: Avoid possible infinite loopGravatar Diogo Franco (Kovensky)2013-07-25
| | | | | | If the first character is not a valid UTF-8 start code nor is in termcap, getch2 would enter an infinite loop. Always walk 1 byte in the UTF-8 case unless it's a valid start code.
* getch2, mplayer: Always call load_termcapGravatar Diogo Franco (Kovensky)2013-07-25
| | | | | getch2 now deals with the cases where we don't have termcap. Add a dummy load_termcap to getch2-win so we don't get linking errors on mingw.
* getch2: Remove unused function, fix possible crashGravatar Diogo Franco (Kovensky)2013-07-25
| | | | | | | | | If we still haven't read the full key from the input but it's regardless a unique match in the database, we could receive a NULL keycode from keys_search (it's not a full match after all) and proceed to use it. Don't disable the keycode matching code if we don't have termcap as we can still match against the hardcoded sequences.
* getch2: Refactor/rewriteGravatar Diogo Franco (Kovensky)2013-07-25
| | | | | | | | | | | | | | | | | | | | | | Still uses termcap, but uses terminfo for loading the termcap database if possible. Adds configure test to find terminfo; skips the termcap test if terminfo is found since terminfo provides termcap. Use termcap completely for special keys; if we can't get it from termcap and it isn't one of the known fallbacks, we ignore its specialness and treat as a sequence of UTF-8 codes. Further hardcoded fallbacks can be added by calling keys_push_once in load_termcap; there is no limit to the amount of keys pushed. Uses the "ke" and "ks" capabilities to start / exit application mode, which is necessary on vt100 emulators (including screen, xterm and all terminals that emulate either of those) to correctly receive arrow keys. It's now possible to compile getch2 even without termcap, though it won't be of much use since it'll be unable to detect special keys. Converted to 4 spaces per tab, prettified some statements.
* cocoa_common: handle keyboard modifiers for mouse eventsGravatar Stefano Pigozzi2013-07-21
|
* w32: update manifest for high DPI and Windows 8.1Gravatar James Ross-Gowan2013-07-14
| | | | | | | | | | | | | | | | | Since Windows Vista, when running at 144 DPI or higher with composition switched on, applications that don't declare themselves to be DPI aware are stretched by the window manager, kind of like low resolution apps in OSX. To avoid this, declare DPI awareness in the manifest. Since mpv is practically resolution independent this shouldn't cause any trouble. The 'True/PM' value declares per-monitor DPI awareness in Windows 8.1, so that the mpv isn't shrunk when moved from a high DPI screen to one with a lower DPI. Also, avoid compatibility shims by declaring compatibility with all Windows versions from Vista to 8.1 and add the missing uiAccess attribute to the requestedExecutionLevel element.
* getch2-win: uncrustifyGravatar wm42013-07-14
|
* osdep: remove unused mmap compatibility hacksGravatar wm42013-07-07
| | | | | | | Not sure how this worked. Only af_export.c and tvi_v4l2.c were using mmap, but they didn't include osdep/mmap.h or mmap_anon.h. In any case, we trust that the target system is sufficiently POSIX compliant if mmap is actually defined (as checked by configure).
* cocoa: remove usage of mp_fifoGravatar Stefano Pigozzi2013-07-03
| | | | | | Update Cocoa parts to remove usage of the mp_fifo internal API to send events to the core and use the input context directly. This is to follow commits the work in commits 70a8079c and d603e73c.
* core: cleanup more mp_fifo leftoversGravatar wm42013-07-02
| | | | Now only the OSX and Wayland parts are using this.
* OSX: fix compilation with 10.7 SDKGravatar Stefano Pigozzi2013-06-19
| | | | | | | | | | | | | | | | | | | | | | | | Recent work in the OS X parts of the code started using clang's support for Obj-C's support for Literals and Subscripting. These particular language features remove a lot of boilerplate code and allow to interact with collections as consicely as one would do in scripting languages like Ruby or Python. Even if these are compiler features, Subscripting needs some runtime support. This is provided with libarclite (coming with the compiler), but we need to add the proper method definitions since the 10.7 SDK headers do not include them. That is because 10.7 shipped before this language features. This will cause some warnings when compiling with the 10.7 SDK because the commit also redefines BOOL to make autoboxing/unboxing of BOOL literals to work. If you need to test this for whatever reason on 10.8, just pass in the correct SDK to configure's extra cflags: ./configure --extra-cflags='-mmacosx-version-min=10.7 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk' Fixes #117
* osdep: remove shmem wrapperGravatar wm42013-06-18
| | | | This is unused now that the cache is always threaded.
* macosx_events: handle key modifiers with media keysGravatar Stefano Pigozzi2013-06-06
| | | | | | This was overlooked in the previous inplementation. Adding it required some refactoring of the `handleKeyDown:` method in order to extract common parts with `handleMediaKey:`.
* macosx_events: DRY up key lookup over dictionaryGravatar Stefano Pigozzi2013-06-05
| | | | | Two methods duplicated very similar behaviour. Extract method with the common behaviour.
* macosx_events: make remote property an instance variableGravatar Stefano Pigozzi2013-06-05
| | | | There was no reason for it to be public.
* osx: improve Media Keys supportGravatar Stefano Pigozzi2013-06-04
| | | | | | | | | | | | | | | | | | | | | | | This commit addresses some issues with the users had with the previous implementation in commit c39efb9. Here's the changes: * Use Quartz Event Taps to remove Media Key events mpv handles from the global OS X queue. This prevents conflicts with iTunes. I did this on the main thread since it is mostly idling. It's the playloop thread that actually does all the work so there is no danger of blocking the event tap callback. * Introduce `--no-media-keys` switch so that users can disable all of mpv's media key handling at runtime (some prefer iTunes for example). * Use mpv's bindings so that users can customize what the media keys do via input.conf. Current bindings are: MK_PLAY cycle pause MK_PREV playlist_prev MK_NEXT playlist_next An additional benefit of this implementation is that it is completly handled by the `macosx_events` file instead of `macosx_application` making the project organization more straightforward.
* osx: add Apple Remote supportGravatar Stefano Pigozzi2013-06-03
| | | | | | | | | | | | | | | | | After killing the non functional AR support in c8fd9e5 I got much complaints so this adds AR support back in (and it works). I am using the HIDRemote class by Felix Schwarz and that part of the code is under the BSD license. I slightly modified it replacing [NSApplication sharedApplication] with NSApp. The code of the class is quite complex (probably because it had to deal with all the edge cases with IOKit) but it works nicely as a black box. In a later commit I'll remove the deprecation warnings caused by HIDRemote's usage of Gestalt. Check out `etc/input.conf` for the default bindings. Apple Remote functionality is automatically compiled in when cocoa is enabled. It can be disabled at runtime with the `--no-ar` option.
* osx: implement media keysGravatar Stefano Pigozzi2013-06-03
| | | | | | | | | | | | | | | Media keys are pretty handy if you use mpv as a music player (yes I'm one of those people that do). These are the bindings (which lead to the same behaviour as iTunes): * NX_KEYTYPE_PLAY -> MP_KEY_PLAY * NX_KEYTYPE_FAST -> MP_KEY_NEXT * NX_KEYTYPE_REWIND -> MP_KEY_PREV I just handled these ones as the volume one would be pretty invasive. I could maybe change it to increase the application's volume instead of system volume only when mpv is frontmost (iTunes does this), but some users would probably hate it.
* macosx_events: send all queued eventsGravatar Stefano Pigozzi2013-06-03
| | | | | Seeking feels a little faster or it may be self suggestion. There's really no reason to just send only one event at a time.
* osx: cocoa_common: use default wakeup periodGravatar Stefano Pigozzi2013-06-03
| | | | | Now that Cocoa's input handling is done on a separate thread from the playloop it is ridicolously simple to have longer asynchronous sleeps when paused.
* osx: create macosx_events to deal with keyDown eventsGravatar Stefano Pigozzi2013-06-03
| | | | | | On OSX with Cocoa enabled keyDown events are now handled with addLocalMonitorForEventsMatchingMask:handler:. This allows to respond to events even when there is no VO initialized but the GUI is focused.
* macosx_application: refactor psn matching codeGravatar Stefano Pigozzi2013-05-30
| | | | Objective-C is shorter / more readable than snprintf.