summaryrefslogtreecommitdiffstats
path: root/video/out/wayland_common.c
Commit message (Collapse)AuthorAgeFilesLines
* wayland: don't schedule resize if going fullscreenRicardo Vieira2014-04-171-1/+0
| | | | mpv was resizing to the same size before it went to fullscreen, we don't need to schedule a resize because the compositor will send a configure event with the new dimensions and thats when we should do it.
* wayland: properly empty output listAlexander Preisinger2014-01-151-4/+4
|
* wayland: fix crash when initialization failswm42014-01-151-1/+2
| | | | | | On X11, if no wayland compositor is running, wl_list_init() will never be called. This will cause destroy_display() to segfault when trying to iterate over the list.
* wayland: fix memory leaksAlexander Preisinger2014-01-151-0/+17
| | | | | | | | There are still some leaks from wayland-cursor stuff, but there is no way to free the memory as user of the cursor library. Conflicts: video/out/wayland_common.c
* wayland: cleanup registry_handle_globalAlexander Preisinger2014-01-151-2/+1
| | | | | The wl_registry object is already passed as a parameter. No need to create a temporary variable.
* wayland: remove set_user_data from seat_listenerAlexander Preisinger2014-01-151-2/+0
| | | | | | | | | The user_data is passed on add_listener and can later be changed with set_user_data. But because we don't want to change it later and because it is the same object remove the set_user_data call. This might be a copy&paste leftover from the initial draft for the wayland backend.
* wayland: use static consistentlyAlexander Preisinger2014-01-151-4/+4
| | | | Declare everything that is only needed inside wayland_common.c as static.
* wayland: fix fullscreen & resizing for goodAlexander Preisinger2014-01-151-11/+27
| | | | | | | I added enough logic to never set ontop or fullscreen twitce. This commit keeps also the size of the video if multiple videos are played. If the ratio differs the width will be kept at the same size and only the height changes.
* wayland: silence annoying libwayland-client messagewm42014-01-151-0/+3
| | | | | | | | | | | | | | | | | libwayland-client contains the following code [1]: runtime_dir = getenv("XDG_RUNTIME_DIR"); if (!runtime_dir) { fprintf(stderr, "error: XDG_RUNTIME_DIR not set in the environment.\n"); This means this message will unconditionally and unavoidably be printed if XDG_RUNTIME_DIR is not set. Since mpv is a terminal program, and we want to avoid unnecessary output, work it around by not attempting to use wayland if this environment variable is not set. [1] http://cgit.freedesktop.org/wayland/wayland/tree/src/wayland-client.c#n636 (cd0dccd01e16fa404e03974d30ded3aebdb1c4bc)
* wayland: fix some memory leaks on initialization failurewm42014-01-151-6/+13
| | | | | | | | | | | This commonly happens when initializing vo_opengl on a X11-only system. Unfortunately, most wl_*_destroy() functions appear not to accept NULL pointers, making partial deinitialization a pain: you have to add your own NULL checks everywhere to avoid crashes. xkb.context is uninitialized separately, because you can initialize it just fine, even if the rest of input initialization fails.
* wayland: remove workaroundAlexander Preisinger2014-01-061-6/+3
| | | | | | | | The changes in the vo_wayland_ontop function have no effect on the workaround. Somehow the problem just disappeared. I guess it is because of the new control function in gl_wayland.c where the resize happens immediatly after the event dispatch/flush.
* wayland: move workaround to fullscreen codeAlexander Preisinger2014-01-061-4/+5
| | | | | Because of this workaround there was a bug in the wayland vo. Now it works on both vos (opengl and shm) as it should.
* wayland/opengl: fix garbage bordersAlexander Preisinger2014-01-061-21/+22
| | | | | It seems mpv draws garbage in those regions. Now we calculate the aspect and let weston draw the black borders.
* wayland: don't change set fullscreen twiceAlexander Preisinger2014-01-061-1/+1
| | | | | Newest weston chrashes if we call set_fullscreen twice. This is a major bug I which I should probably report.
* Split mpvcore/ into common/, misc/, bstr/wm42013-12-171-2/+2
|
* Move options/config related files from mpvcore/ to options/wm42013-12-171-1/+1
| | | | | | | | | Since m_option.h and options.h are extremely often included, a lot of files have to be changed. Moving path.c/h to options/ is a bit questionable, but since this is mainly about access to config files (which are also handled in options/), it's probably ok.
* Move mpvcore/input/ to input/wm42013-12-171-2/+2
|
* wayland: print waylands display errosAlexander Preisinger2013-12-041-0/+40
| | | | | This is very usefull especially if you want to use newer wayland stuff like wl_subsurfaces and xdg_surfaces.
* wayland: create xkbcommon keymap from stringAlexander Preisinger2013-11-131-2/+1
| | | | Fixes a problem where the passed size doesn't match the actuall string.
* waylad: implement functionality for window-scalingAlexander Preisinger2013-11-121-0/+12
|
* wayland: better name for mouse coordinatesAlexander Preisinger2013-10-251-5/+5
| | | | | I had to look up what the surf_x and surf_y members do. That means the name is not very good. Also a comment.
* wayland: fix fullscreen transparent border regionsAlexander Preisinger2013-10-251-22/+28
| | | | | | | The default behavior of weston changed some time ago to not fill the surface black for fullscreen windows. Now let mpv draw the whole screen in fullscreen mode.
* wayland: use mp_input_test_draggingAlexander Preisinger2013-10-201-3/+6
| | | | | | Instead of removing dragging we now test if it we should drag the window or not. Because if the OSC shows up we can not drag the window because that would cause mouse events that makes the OSC disappear.
* Revert "wayland: remove moving window by grabbing"Alexander Preisinger2013-10-201-0/+4
| | | | This reverts commit 3308bc2bc919cb8fadddad04e48b94d4e9324a34.
* Revert "wayland: remove outdated comment"Alexander Preisinger2013-10-201-0/+2
| | | | This reverts commit d75cfef49c271e43317666451f17c55e6747e564.
* wayland: remove outdated commentAlexander Preisinger2013-09-241-2/+0
|
* wayland: remove moving window by grabbingAlexander Preisinger2013-09-241-4/+0
| | | | | | Moving the window was convenient but generates a MOUSE_LEAVE event which it shouldn't. Now we remove it, because it is still possible to move the window in weston with MOD+BTN0.
* wayland/common: exit properly on fd errorsAlexander Preisinger2013-09-191-2/+6
| | | | | | | Before this commit there was just an error message, but the file descriptor was still open. Now we close the file descriptor and prevent it from calling endlessly. Also a CLOSE_WIN event is sent which closes the window eventually if the action of CLOSE_WIN is set to quit or quit_watch_later.
* gl_common: signal to GL backend whether we are probingwm42013-09-161-2/+4
| | | | | | | | | | | This is supposed to reduce the amount of useless error messages shown during initialization of vo_opengl. If multiple backends are compiled, usually only one of them will work. For example, on Linux both X and Wayland backends can be compiled, but usually either Wayland or X is running. Then, if Wayland is not running, but X is, trying to initialize the Wayland backend should not spam the terminal with error messages. Signed-off-by: Andreas Sinz <andreas.sinz@aon.at>
* wayland: change fs messages to dbgAlexander Preisinger2013-09-121-2/+2
| | | | These messages are only helpful when debugging.
* Revert "wayland: don't create our own log context"Alexander Preisinger2013-09-121-8/+9
| | | | | | | This reverts commit beab54506e61bc080880e827e351439f76542e68. Conflicts: video/out/wayland_common.c
* wayland/common: improved error messagesAlexander Preisinger2013-09-101-4/+8
| | | | | The previous error message were not very usefull. Also include a hint where to look for solutions.
* wayland: update license headersAlexander Preisinger2013-09-091-7/+5
|
* wayland: fix memory leaksAlexander Preisinger2013-08-261-2/+5
|
* wayland: don't create our own log contextAlexander Preisinger2013-08-261-10/+9
| | | | This was more problematic than useful ([vo/wayland/wayland])
* wayland: remove shm listener for the backendAlexander Preisinger2013-08-251-15/+0
| | | | | | The obtained information from the shm listener isn't used by anything and is also wrong now in wayland git master branch because of new shm formats which need a different way of saving the supported formats.
* wayland/egl: rework resizing (again)Alexander Preisinger2013-08-251-22/+61
| | | | | | | | | Moves a good chunk of the resizing code to wayland_common.c. This makes it possible to share it with future video drivers. It doesn't resizit it immediatly, it calcutlates the new position and size and then shedules a resizing event. This removes the ugly callback and void pointer from the wayland data structure.
* wayland: separate shm and cursor contextAlexander Preisinger2013-08-191-7/+13
| | | | | | The display, window, keyboard and cursor structures are now cleanly and logically separated. Also could prevent a future bug where no shm format is set when the cursor image is loaded (Never happened until now).
* wayland: add support for precise scrollingAlexander Preisinger2013-08-071-2/+14
| | | | | | | | The default value for a standard mouse is 10.0. Because we don't want to multiply the value in the input config file we scale it down to 1.0. Hopefully this should work for more precise mousewheels or touchpad, but I don't have access to such hardware.
* core: move contents to mpvcore (2/2)Stefano Pigozzi2013-08-061-5/+5
| | | | Followup commit. Fixes all the files references.
* wayland: switch to the new mp_msg apiAlexander Preisinger2013-07-311-8/+15
|
* Remove subopt-helperwm42013-07-221-2/+0
| | | | Finally not used by anything anymore. Farewell.
* wayland: use a unified struct for the stateAlexander Preisinger2013-07-181-222/+214
| | | | | | | | | | This commit removes the pointer to the single different structures for input and window and puts them as anonymous structures inside the wayland_state structure. This has the disadvantage of passing the substructure to the listeners, but the advantage is that we don't have to allocate them and check for NULL pointers. This makes it more reliable and easier to follow.
* wayland: don't resize in gl_wayland.cAlexander Preisinger2013-07-181-2/+0
| | | | | | The vo_wayland_fullscreen handles resizing for the video, because the video could still be in fullscreen mode and resizing it in gl_wayland could make it grow or shrink.
* video: remove fullscreen flags chaoswm42013-07-181-15/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There was a MPOpts fullscreen field, a mp_vo_opts.fs field, and VOFLAG_FULLSCREEN. Remove all these and introduce a mp_vo_opts.fullscreen flag instead. When VOs receive VOCTRL_FULLSCREEN, they are supposed to set the current fullscreen mode to the state in mp_vo_opts.fullscreen. They also should do this implicitly on config(). VOs which are capable of doing so can update the mp_vo_opts.fullscreen if the actual fullscreen mode changes (e.g. if the user uses the window manager controls). If fullscreen mode switching fails, they can also set mp_vo_opts.fullscreen to the actual state. Note that the X11 backend does almost none of this, and it has a private fs flag to store the fullscreen flag, instead of getting it from the WM. (Possibly because it has to deal with broken WMs.) The fullscreen option has to be checked on config() to deal with the -fs option, especially with something like: mpv --fs file1.mkv --{ --no-fs file2.mkv --} (It should start in fullscreen mode, but go to windowed mode when playing file2.mkv.) Wayland changes by: Alexander Preisinger <alexander.preisinger@gmail.com> Cocoa changes by: Stefano Pigozzi <stefano.pigozzi@gmail.com>
* wayland: early aspect calculation in vo_configAlexander Preisinger2013-07-161-0/+2
| | | | | | | | | | | | Calculate the aspect ratio in vo_config, when we get the window size and in the inside the resize function we calculate the aspect ratio of the output in order to determine if we have to change the height or the width of the video. If the ratio of the output is bigger than the ratio of the video then we have to set the width accordingly and if the ratio is smaller we change the size. But only if no resize edges are passed, because this indicates that we want to change the windows state instead of just a simple resize and the video should not grow bigger than the requested size.
* wayland: use default fullscreen methodAlexander Preisinger2013-07-161-1/+1
| | | | | I misunderstood how the different methods work and if we set the size accordingly to the wayland configure event then METHOD_DEFAULT is what we want.
* wayland: remove mp_fifo headerAlexander Preisinger2013-07-031-1/+0
|
* wayland: fix typoAlexander Preisinger2013-07-031-1/+1
|
* wayland: remove mp_fifoAlexander Preisinger2013-07-021-7/+7
|
* wayland: implement MOUSE_LEAVEAlexander Preisinger2013-07-021-0/+2
|
* input: require VOs to send key up events, redo input key lookupwm42013-07-021-3/+4
| | | | | | | | | | | | | | Making key up events implicit was sort-of a nice idea, but it's too tricky and unreliable and makes the key lookup code (interpret_keys()) hard to reason about. See e.g. previous commit for subtle bugs and issues this caused. Make key-up events explicit instead. Add key up events to all VOs. Any time MP_KEY_STATE_DOWN is used, the matching key up event must use MP_KEY_STATE_UP. Rewrite the key lookup code. It should be simpler and more robust now. (Even though the LOC increases, because the new code is less "compact".)
* wayland: use VOCTRL_UPDATE_WINDOW_TTILEAlexander Preisinger2013-06-161-1/+3
|
* wayland: use VOCTRL_SET_CURSOR_VISIBILITYAlexander Preisinger2013-05-261-33/+23
|
* wayland: introduce vo_wayland_configAlexander Preisinger2013-05-261-13/+21
| | | | | This removes the need for exposing vo_wayland_fullscreen and other functions also this will be usefull for other vos in the future.
* video/out: introduce vo_control for gl_common based VOswm42013-05-261-0/+23
| | | | | | | | | | | | | | | | Instead of having separate callbacks for each backend-handled feature (like MPGLContext.fullscreen, MPGLContext.border, etc.), pass the VOCTRL responsible for this directly to the backend. This allows removing a bunch of callbacks, that currently must be set even for optional/lesser features (like VOCTRL_BORDER). This requires changes to all VOs using gl_common, as well as all backends that support gl_common. Also introduce VOCTRL_CHECK_EVENTS. vo.check_events is now optional. VO backends can use VOCTRL_CHECK_EVENTS instead to implementing check_events. This has the advantage that the event handling code in VOs doesn't have to be duplicated if vo_control() is used.
* wayland: reworked resizingAlexander Preisinger2013-05-071-15/+21
| | | | | | | | | | This fixes 2 bugs: * Resizing very fast breaks the aspect of the window and the width and height don't match with the video anymore * Pressing 'f' for fullscreen very fast can overwrite the backup variables for the previous width and height. Also includes a better aspect calculation with fluid resizing.
* wayland: fix wrong poll comment, check for errorsAlexander Preisinger2013-05-021-2/+4
| | | | | | | | We only print an error message when POLLERR or POLLHUP occurrs, as the something did go horribly wrong and the server will either deal with it or crash. Also add POLLOUT to the events.
* wayland: avoid iterating over all outputsAlexander Preisinger2013-05-021-15/+18
| | | | | If we use the output itself as user data we don't have to iterate over all outputs when the handle_mode event comes.
* wayland: remove unused stuffAlexander Preisinger2013-05-021-12/+0
|
* wayland: use new function xkb_keymap_from_bufferAlexander Preisinger2013-05-021-9/+5
| | | | | | Bump xkbcommon version and use the new xkb_keymap_from_buffer. This is more secure, because the from_string expects a 0 terminated string, but this cannot be guaranteed with mmap.
* wayland: remove input modifier variableAlexander Preisinger2013-05-011-12/+0
| | | | This variable was never used anywhere.
* wayland: use GetTimerMS for hiding mouse cursorAlexander Preisinger2013-05-011-148/+36
| | | | | | This commit remove a lot of linux specific code, like epoll. It also reduces the complexity of the code. Instead of epoll we use poll which makes the wayland backend more portable to other platforms.
* wayland: use mpv internal key auto-repeat handlingAlexander Preisinger2013-05-011-53/+5
| | | | | | This removes a good chunk of code trying to recreate key repeat. Because the wayland protocol and xkbcommon don't have an interface for auto-repeating pressed keys.
* wayland: fully support cursor autohide optionsAlexander Preisinger2013-03-231-15/+15
| | | | I missed the special cases in the previous commits.
* wayland: use the cursor_autohide_delay optionAlexander Preisinger2013-03-111-6/+9
| | | | | In the previous implemention the backend always assumed 1 second instead of honoring the cursor_autohide_delay option
* wayland: move window by grabing itAlexander Preisinger2013-03-111-0/+8
| | | | | Because the are no server-side-decorations in the available wayland compositors use grabbing the surface to move it.
* vo: Separate vo options from MPOptsAlexander Preisinger2013-03-041-12/+12
| | | | | | | Separate the video output options from the big MPOpts structure and also only pass the new mp_vo_opts structure to the vo backend. Move video_driver_list into mp_vo_opts
* vo: remove and cleanup globalsAlexander Preisinger2013-03-041-14/+12
| | | | | | | | Removes almost every global variabel in vo.h and puts them in a special struct in MPOpts for video output related options.