Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • videolan/vlc
  • chouquette/vlc
  • bakiewicz.marek122/vlc
  • devnexen/vlc
  • rohanrajpal/vlc
  • blurrrb/vlc
  • gsoc/gsoc2019/darkapex/vlc
  • b1ue/vlc
  • fkuehne/vlc
  • magsoft/vlc
  • chub/vlc
  • cramiro9/vlc
  • robUx4/vlc
  • rom1v/vlc
  • akshayaky/vlc
  • tmk907/vlc
  • akymaster/vlc
  • govind.sharma/vlc
  • psilokos/vlc
  • xjbeta/vlc
  • jahan/vlc
  • 1480c1/vlc
  • amanchande/vlc
  • aaqib/vlc
  • rist/vlc
  • apol/vlc
  • mindfreeze/vlc
  • alexandre-janniaux/vlc
  • sandsmark/vlc
  • jagannatharjun/vlc
  • gsoc/gsoc2020/matiaslgonzalez/vlc
  • gsoc/gsoc2020/jagannatharjun/vlc
  • mstorsjo/vlc
  • gsoc/gsoc2020/vedenta/vlc
  • gsoc/gsoc2020/arnav-ishaan/vlc
  • gsoc/gsoc2020/andreduong/vlc
  • fuzun/vlc
  • gsoc/gsoc2020/vatsin/vlc
  • gsoc/gsoc2020/sagid/vlc
  • yaron/vlc
  • Phoenix/vlc
  • Garf/vlc
  • ePiratWorkarounds/vlc
  • tguillem/vlc
  • jnqnfe/vlc
  • mdc/vlc
  • Vedaa/vlc
  • rasa/vlc
  • quink/vlc
  • yealo/vlc
  • aleksey_ak/vlc
  • ePirat/vlc
  • ilya.yanok/vlc
  • asenat/vlc
  • m/vlc
  • bunjee/vlc
  • BLumia/vlc
  • sagudev/vlc
  • hamedmonji30/vlc
  • nullgemm/vlc
  • DivyamAhuja/vlc
  • thesamesam/vlc
  • dag7/vlc
  • snehil101/vlc
  • haasn/vlc
  • jbk/vlc
  • ValZapod/vlc
  • mfkl/vlc
  • WangChuan/vlc
  • core1024/vlc
  • GhostVaibhav/vlc
  • dfuhrmann/vlc
  • davide.prade/vlc
  • tmatth/vlc
  • Courmisch/vlc
  • zouya/vlc
  • hpi/vlc
  • EwoutH/vlc
  • aleung27/vlc
  • hengwu0/vlc
  • saladin/vlc
  • ashuio/vlc
  • richselwood/vlc
  • verma16Ayush/vlc
  • chemicalflash/vlc
  • PoignardAzur/vlc
  • huangjieNT/vlc
  • Blake-Haydon/vlc
  • AnuthaDev/vlc
  • gsoc/gsoc2021/mpd/vlc
  • nicolas_lequec/vlc
  • sambassaly/vlc
  • thresh/vlc
  • bonniegong/vlc
  • myaashish/vlc
  • stavros.vagionitis/vlc
  • ileoo/vlc
  • louis-santucci/vlc
  • cchristiansen/vlc
  • sabyasachi07/vlc
  • AbduAmeen/vlc
  • ashishb0410/vlc
  • urbanhusky/vlc
  • davidepietrasanta/vlc
  • riksleutelstad/vlc
  • jeremyVignelles/vlc
  • komh/vlc
  • iamjithinjohn/vlc
  • JohannesKauffmann/vlc2
  • kunglao/vlc
  • natzberg/vlc
  • jill/vlc
  • cwendling/vlc
  • adufou/vlc
  • ErwanAirone/vlc
  • HasinduDilshan10/vlc
  • vagrantc/vlc
  • rafiv/macos-bigsur-icon
  • Aymeriic/vlc
  • saranshg20/vlc
  • metzlove24/vlc
  • linkfanel/vlc
  • Ds886/vlc
  • metehan-arslan/vlc
  • Skantes/vlc
  • kgsandundananjaya96/vlc
  • mitchcapper/vlc
  • advaitgupta/vlc
  • StefanBruens/vlc
  • ratajs/vlc
  • T.M.F.B.3761/vlc
  • m222059/vlc
  • casemerrick/vlc
  • joshuaword2alt/vlc
  • sjwaddy/vlc
  • dima/vlc
  • Ybalrid/vlc
  • umxprime/vlc
  • eschmidt/vlc
  • vannieuwenhuysenmichelle/vlc
  • badcf00d/vlc
  • wesinator/vlc
  • louis/vlc
  • xqq/vlc
  • EmperorYP7/vlc
  • NicoLiam/vlc
  • loveleen/vlc
  • rofferom/vlc
  • rbultje/vlc
  • TheUnamed/vlc
  • pratiksharma341/vlc
  • Saurab17/vlc
  • purist.coder/vlc
  • Shuicheng/vlc
  • mdrrubel292/vlc
  • silverbleu00/vlc
  • metif12/vlc
  • asher-m/vlc
  • jeffk/vlc
  • Brandonbr1/vlc
  • beautyyuyanli/vlc
  • rego21/vlc
  • muyangren907/vlc
  • collectionbylawrencejason/vlc
  • evelez/vlc
  • GSMgeeth/vlc
  • Oneric/vlc
  • TJ5/vlc
  • XuanTung95/vlc
  • darrenjenny21/vlc
  • Trenly/vlc
  • RockyTDR/vlc
  • mjakubowski/vlc
  • caprica/vlc
  • ForteFrankie/vlc
  • seannamiller19/vlc
  • junlon2006/vlc
  • kiwiren6666/vlc
  • iuseiphonexs/vlc
  • fenngtun/vlc
  • Rajdutt999/vlc
  • typx/vlc
  • leon.vitanos/vlc
  • robertogarci0938/vlc
  • gsoc/gsoc2022/luc65r/vlc-mpd
  • skeller/vlc
  • MCJack123/vlc
  • luc65r/vlc-mpd
  • popov895/vlc
  • claucambra/vlc
  • brad/vlc
  • matthewmurua88/vlc
  • Tomas8874/vlc
  • philenotfound/vlc
  • makita-do3/vlc
  • LZXCorp/vlc
  • mar0x/vlc
  • senojetkennedy0102/vlc
  • shaneb243/vlc
  • ahmadbader/vlc
  • rajduttcse26/vlc-audio-filters
  • Juniorzito8415/vlc
  • achernyakov/vlc
  • lucasjetgroup/vlc
  • pupdoggy666/vlc
  • gmde9363/vlc
  • alexnwayne/vlc
  • bahareebrahimi781/vlc
  • hamad633666/vlc
  • umghof3112/vlc
  • joe0199771874/vlc
  • Octocats66666666/vlc
  • jjm_223/vlc
  • btech10110.19/vlc
  • sunnykfc028/vlc-audio-filters
  • loic/vlc
  • nguyenminhducmx1/vlc
  • JanekKrueger/vlc
  • bstubbington2/vlc
  • rcombs/vlc
  • Ordissimo/vlc
  • king7532/vlc
  • noobsauce101/vlc
  • schong0525/vlc
  • myQwil/vlc
  • apisbg91/vlc
  • geeboy0101017/vlc
  • kim.faughey/vlc
  • nurupo/vlc
  • yyusea/vlc
  • 0711235879.khco/vlc
  • ialo/vlc
  • iloveyeye2/vlc
  • gdtdftdqtd/vlc
  • leandroconsiglio/vlc
  • AndyHTML2012/vlc
  • ncz/vlc
  • lucenticus/vlc
  • knr1931/vlc
  • kjoonlee/vlc
  • chandrakant100/vlc-qt
  • johge42/vlc
  • polter/vlc
  • hexchain/vlc
  • Tushwrld/vlc
  • mztea928/vlc
  • jbelloncastro/vlc
  • alvinhochun/vlc
  • ghostpiratecrow/vlc
  • ujjwaltwitx/vlc
  • alexsonarin06/vlc
  • adrianbon76/vlc
  • altsod/vlc
  • damien.lucas44/vlc
  • dmytrivtaisa/vlc
  • utk202/vlc
  • aaxhrj/vlc
  • thomas.hermes/vlc
  • structurenewworldorder/vlc
  • slomo/vlc
  • wantlamy/vlc
  • musc.o3cminc/vlc
  • thebarshablog/vlc
  • kerrick/vlc
  • kratos142518/vlc
  • leogps/vlc
  • vacantron/vlc
  • luna_koly/vlc
  • Ratio2/vlc
  • anuoshemohammad/vlc
  • apsun/vlc
  • aaa1115910/vlc
  • alimotmoyo/vlc
  • Ambossmann/vlc
  • Sam-LearnsToCode/vlc
  • Chilledheart/vlc
  • Labnann/vlc
  • ktcoooot1/vlc
  • mohit-marathe/vlc
  • johnddx/vlc
  • manstabuk/vlc
  • Omar-ahmed314/vlc
  • vineethkm/vlc
  • 9Enemi86/vlc
  • radoslav.m.panteleev/vlc
  • ashishami2002/vlc
  • Corbax/vlc
  • firnasahmed/vlc
  • pelayarmalam4/vlc
  • c0ff330k/vlc
  • shikhindahikar/vlc
  • l342723951/vlc
  • christianschwandner/vlc
  • douniwan5788/vlc
  • 7damian7/vlc
  • ferdnyc/vlc
  • f.ales1/vlc
  • pandagby/vlc
  • BaaBaa/vlc
  • jewe37/vlc
  • w00drow/vlc
  • russelltg/vlc
  • ironicallygod/vlc
  • soumyaDghosh/vlc
  • linzihao1999/vlc
  • deyayush6/vlc
  • mibi88/vlc
  • newabdallah10/vlc
  • jhorbincolombia/vlc
  • rimvihaqueshupto/vlc
  • andrewkhon98/vlc
  • fab78/vlc
  • lapaz17/vlc
  • amanna13/vlc
  • mdakram28/vlc
  • 07jw1980/vlc
  • sohamgupta/vlc
  • Eson-Jia1/vlc
  • Sumou/vlc
  • vikram-kangotra/vlc
  • chalice191/vlc
  • olivercalder/vlc
  • aaasg4001/vlc
  • zipdox/vlc
  • kwizart/vlc
  • Dragon-S/vlc
  • jdemeule/vlc
  • gabriel_lt/vlc
  • locutusofborg/vlc
  • sammirata/vlc-librist
  • another/vlc
  • Benjamin_Loison/vlc
  • ahmedmoselhi/vlc
  • petergaal/vlc
  • huynhsontung/vlc
  • dariusmihut/vlc
  • tvermaashutosh/vlc
  • buti/vlc
  • Niram7777/vlc
  • rohan-here/vlc
  • balaji-sivasakthi/vlc
  • rlindner81/vlc
  • Kakadus/vlc
  • djain/vlc
  • ABBurmeister/vlc
  • craighuggins/vlc
  • orbea/vlc
  • maxos/vlc
  • aakarshmj/vlc
  • kblaschke/vlc
  • ankitm/vlc
  • advait-0/vlc
  • mohak2003/vlc
  • yselkowitz/vlc
  • AZM999/vlc-azm
  • andrey.turkin/vlc
  • Disha-Baghel/vlc
  • nowrep/vlc
  • Apeng/vlc
  • Choucroute_melba/vlc
  • autra/vlc
  • eclipseo/vlc
  • fhuber/vlc
  • olafhering/vlc
  • sdasda7777/vlc
  • 1div0/vlc
  • skosnits/vlc-extended-playlist-support
  • dnicolson/vlc
  • Timshel/vlc
  • octopols/vlc
  • MangalK/vlc
  • nima64/vlc
  • misawai/vlc
  • Alexander-Wilms/vlc
  • Maxime2/vlc-fork-for-visualizer
  • ww/vlc
  • jeske/vlc
  • sgross-emlix/vlc
  • morenonatural/vlc
  • freakingLovesVLC/vlc
  • borisgolovnev/vlc
  • mpromonet/vlc
  • diogo.simao-marques/vlc
  • masstock/vlc
  • pratikpatel8982/vlc
  • hugok79/vlc
  • longervision/vlc
  • abhiudaysurya/vlc
  • rishabhgarg/vlc
  • tumic/vlc
  • cart/vlc
  • shubham442/vlc
  • Aditya692005/vlc
  • sammirata/vlc4
  • syrykh/vlc
  • Vvorcun/macos-new-icon
  • AyaanshC/vlc
  • nasso/vlc
  • Quark/vlc
  • sebastinas/vlc
  • rhstone/vlc
  • talregev/vlc
  • Managor/vlc
  • abdsaber000/vlc
  • falbrechtskirchinger/vlc
  • b.sullender/vlc
  • hulxv/vlc
  • zyad-ayad/vlc
  • shocknovaa/vlc
  • gremlinflat/vlc
  • Pratham24D/vlc
  • hmaarrfk/vlc
412 results
Show changes
Commits on Source (8)
......@@ -585,6 +585,15 @@ VLC_API void filter_chain_DeleteFilter(filter_chain_t *chain,
*/
VLC_API bool filter_chain_IsEmpty(const filter_chain_t *chain);
/**
* Checks whether the filter chain contains any video filters listening to
* mouse events.
*
* \param chain pointer to filter chain
* \return true if at least one filter listens to mouse events
*/
VLC_API bool filter_chain_HasMouseFilter( const filter_chain_t *chain );
/**
* Get last output format of the last element in the filter chain.
*
......
......@@ -50,6 +50,8 @@ typedef struct vlc_mouse_t
int i_pressed;
/* Is double clicked */
bool b_double_click;
/* Has filter listening to mouse events */
bool b_mouse_filter;
} vlc_mouse_t;
/**
......@@ -66,6 +68,7 @@ static inline void vlc_mouse_Init( vlc_mouse_t *p_mouse )
p_mouse->i_y = 0;
p_mouse->i_pressed = 0;
p_mouse->b_double_click = false;
p_mouse->b_mouse_filter = false;
}
/* */
......@@ -86,6 +89,12 @@ static inline void vlc_mouse_SetPosition( vlc_mouse_t *p_mouse,
p_mouse->i_y = i_y;
}
static inline void vlc_mouse_SetMouseFilter( vlc_mouse_t *p_mouse,
bool mouse_filter )
{
p_mouse->b_mouse_filter = mouse_filter;
}
/* */
static inline bool vlc_mouse_IsPressed( const vlc_mouse_t *p_mouse,
int i_button )
......@@ -151,5 +160,9 @@ static inline bool vlc_mouse_HasReleased( const vlc_mouse_t *p_old,
const int i_mask = 1 << i_button;
return (p_old->i_pressed & i_mask) && (p_new->i_pressed & i_mask) == 0;
}
static inline bool vlc_mouse_HasMouseFilter( const vlc_mouse_t *p_mouse )
{
return p_mouse->b_mouse_filter;
}
#endif /* _VLC_MOUSE_H */
......@@ -157,6 +157,7 @@ struct es_out_id_t
vlc_mouse_event mouse_event_cb;
void* mouse_event_userdata;
vlc_mouse_t oldmouse;
};
typedef struct
......@@ -325,6 +326,35 @@ default_val:
for( int fetes_i=0; fetes_i<2; fetes_i++ ) \
vlc_list_foreach( pos, (!fetes_i ? &p_sys->es : &p_sys->es_slaves), node )
static void MouseEventCb(const vlc_mouse_t *newmouse, void *userdata)
{
es_out_id_t *id = userdata;
struct vlc_input_es_out *out = id->out;
es_out_sys_t *p_sys = PRIV(&out->out);
if(!p_sys->p_input)
return;
/* player event is disabled when a filter is listening to mouse events */
if(!newmouse || vlc_mouse_HasMouseFilter(newmouse))
{
vlc_mouse_Init(&id->oldmouse);
return;
}
struct vlc_input_event_mouse event = {
.oldmouse = id->oldmouse,
.newmouse = *newmouse
};
input_SendEvent(p_sys->p_input, &(struct vlc_input_event) {
.type = INPUT_EVENT_MOUSE,
.mouse_data = event,
});
id->oldmouse = *newmouse;
}
static void
decoder_on_vout_started(vlc_input_decoder_t *decoder, vout_thread_t *vout,
enum vlc_vout_order order, void *userdata)
......@@ -2190,8 +2220,9 @@ static es_out_id_t *EsOutAddLocked(es_out_sys_t *p_sys,
es->master = false;
vlc_vector_init(&es->sub_es_vec);
es->p_master = p_master;
es->mouse_event_cb = NULL;
es->mouse_event_userdata = NULL;
vlc_mouse_Init(&es->oldmouse);
es->mouse_event_cb = MouseEventCb;
es->mouse_event_userdata = es;
es->i_pts_level = VLC_TICK_INVALID;
es->delay = VLC_TICK_MAX;
......@@ -3605,9 +3636,14 @@ static int EsOutVaControlLocked(es_out_sys_t *p_sys, input_source_t *source,
p_es->mouse_event_cb = va_arg( args, vlc_mouse_event );
p_es->mouse_event_userdata = va_arg( args, void * );
if( p_es->p_dec )
if( p_es->p_dec && p_es->mouse_event_cb )
vlc_input_decoder_SetVoutMouseEvent( p_es->p_dec,
p_es->mouse_event_cb, p_es->mouse_event_userdata );
else /* fallback to player event */
{
p_es->mouse_event_cb = MouseEventCb;
p_es->mouse_event_userdata = p_es;
}
return VLC_SUCCESS;
}
......
......@@ -25,6 +25,7 @@
#include <vlc_demux.h>
#include <vlc_input.h>
#include <vlc_mouse.h>
#include "input_interface.h"
#include "../misc/interrupt.h"
#include "./source.h"
......@@ -149,6 +150,9 @@ typedef enum input_event_type_e
/* The demux is not able to navigate */
INPUT_EVENT_NAV_FAILED,
/* Mouse event */
INPUT_EVENT_MOUSE,
} input_event_type_e;
#define VLC_INPUT_CAPABILITIES_SEEKABLE (1<<0)
......@@ -271,6 +275,12 @@ struct vlc_input_event_attachments
size_t count;
};
struct vlc_input_event_mouse
{
vlc_mouse_t oldmouse;
vlc_mouse_t newmouse;
};
struct vlc_input_event
{
input_event_type_e type;
......@@ -318,6 +328,8 @@ struct vlc_input_event
struct vlc_input_event_attachments attachments;
/* INPUT_EVENT_NAV_FAILED */
int nav_type;
/* INPUT_EVENT_MOUSE */
struct vlc_input_event_mouse mouse_data;
};
};
......
......@@ -125,6 +125,7 @@ filter_chain_DeleteFilter
filter_chain_GetFmtOut
filter_chain_GetVideoCtxOut
filter_chain_IsEmpty
filter_chain_HasMouseFilter
filter_chain_MouseFilter
filter_chain_NewVideo
filter_chain_Reset
......
......@@ -465,6 +465,19 @@ bool filter_chain_IsEmpty(const filter_chain_t *chain)
return vlc_list_is_empty( &chain->filter_list );
}
bool filter_chain_HasMouseFilter( const filter_chain_t *chain )
{
const chained_filter_t *f;
vlc_list_foreach_const( f, &chain->filter_list, node )
{
const filter_t *p_filter = &f->filter;
if( p_filter->ops->video_mouse )
return true;
}
return false;
}
const es_format_t *filter_chain_GetFmtOut( const filter_chain_t *p_chain )
{
chained_filter_t *last =
......
......@@ -856,6 +856,16 @@ vlc_player_input_NavigationFallback(struct vlc_player_input *input, int nav_type
}
}
static void
vlc_player_input_MouseFallback(struct vlc_player_input *input,
const struct vlc_input_event_mouse *ev)
{
vlc_player_t *player = input->player;
if (vlc_mouse_HasPressed(&ev->oldmouse, &ev->newmouse, MOUSE_BUTTON_LEFT))
vlc_player_TogglePause(player);
}
static void
input_thread_Events(input_thread_t *input_thread,
const struct vlc_input_event *event, void *user_data)
......@@ -1035,6 +1045,9 @@ input_thread_Events(input_thread_t *input_thread,
case INPUT_EVENT_NAV_FAILED:
vlc_player_input_NavigationFallback(input, event->nav_type);
break;
case INPUT_EVENT_MOUSE:
vlc_player_input_MouseFallback(input, &event->mouse_data);
break;
default:
break;
}
......
......@@ -316,6 +316,10 @@ void vout_FilterMouse(vout_thread_t *vout, vlc_mouse_t *mouse)
if (!filter_chain_MouseFilter(sys->filter.chain_static,
&tmp[1], m))
m = &tmp[1];
bool has_mouse_filter = filter_chain_HasMouseFilter(sys->filter.chain_interactive) ||
filter_chain_HasMouseFilter(sys->filter.chain_static);
vlc_mouse_SetMouseFilter(m, has_mouse_filter);
}
vlc_mutex_unlock(&sys->filter.lock);
......