Rémi Duraffort [Thu, 11 Feb 2010 09:08:22 +0000 (10:08 +0100)]
Add all bindings as a submodule of the main vlc git tree.
Some basic information about git submodule:
* by default the submodules are not clone
* by default the url for the submodules are git:// and not ssh://, the
developpers must change this (just uncomment the right line in .gitmodules)
to be able to commit to the bindings.
Git commandes:
* git submodule init => intialize the submodules
* git submodule status => status of the submodules
* git submodule update => update all submodules
Jean-Paul Saman [Fri, 5 Feb 2010 13:13:29 +0000 (14:13 +0100)]
libvlc: add mouse events as libvlc_MediaPlayerEvents
The following events have been added:
- MouseButton : mouse button pressed events
- MouseClick : mouse button click event
- MouseMoved : mouse movement event (x,y) absolute against vlc video output window
- MouseObject : object of interest under mouse button for use by video filters (like: logo)
We must delete from the head to the tail, the opposite of the creation
order. This stems from the fact that an stream output object "sees" the
next element, and may try to use it while being deleted.
The crash was easily reproducible with:
vlc --sout-keep --sout '#duplicate{dst=gather:std{mux=ts,dst=/dev/null}}' \
-I oldrc -vv raw_es.mp2
If we just set "fullscreen" on the emitting video output, the fullscreen
mode will not survive a change of video output.
With this hack, the hotkeys interface can handle the request correctly.
On the other hand, the hotkeys can also handle it incorrectly (e.g. if
inside LibVLC). It all comes down to the fact that key actions are per
instance, when most of them should be per-input.
Keep the authoritative fullscreen status on the playlist
This allows the value to be inherited most cleanly across inputs (if
the video output cannot be recycled anyway). This also enables changing
the fullscreen status in absence of video, just like LibVLC does.
"fullscreen" callback: do nothing if value is unchanged
The old video output core assumes that the fullscreen state must be
toggled if the VOUT_FULLSCREEN_CHANGE bit is set. So we need to check
that the target state is not already correct, as the VLC variables core
does NOT do it internally. This commit provides rare exception to the
rule that oldval is useless.
This fixes a whole class of race conditions where two threads try to
change fullscreen status at the same time.
In the video filter case, we now enable fullscreen on all childrens, not
just one. This seems a bit more logical for wall. Without this, toggling
fullscreen would only ever work on the first video output. With this,
things should work great if the different pieces of the wall are on
different video ports, and OK (Alt+Tab is your friend) otherwise.
Do not propagate fullscreen status up the filter chain
This is fundamentally a lock inversion between the parent and child
object variables locks. Interfaces (hotkeys and others) use downward
propagation, so we keep that direction and remove the other direction.
"fullscreen" callback: do nothing if value is unchanged
The old video output core assumes that the fullscreen state must be
toggled if the VOUT_FULLSCREEN_CHANGE bit is set. So we need to check
that the target state is not already correct, as the VLC variables core
does NOT do it internally. This commit provides rare exception to the
rule that oldval is useless.
This fixes a whole class of race conditions where two threads try to
change fullscreen status at the same time.
In the video filter case, we now enable fullscreen on all childrens, not
just one. This seems a bit more logical for wall. Without this, toggling
fullscreen would only ever work on the first video output. With this,
things should work great if the different pieces of the wall are on
different video ports, and OK (Alt+Tab is your friend) otherwise.
Jakob Leben [Wed, 10 Feb 2010 01:30:12 +0000 (02:30 +0100)]
services_discovery: fix embedding longname in name, take 2
The longname argument to macro #define VLC_SD_PROBE_HELPER(name, longname, cat)
is usually in the form like N_("some_longname"). Literalization of the argument by
doing # longname in the macro will result in a literal "N_(\"some_longname\")"
instead of translating the long name.