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
403 results
Show changes
Commits on Source (10)
......@@ -3194,7 +3194,7 @@ AS_IF([test "${enable_xcb}" != "no"], [
xcb_err=""
dnl libxcb
PKG_CHECK_MODULES([XCB], [xcb >= 1.6],, [
PKG_CHECK_MODULES([XCB], [xcb >= 1.8],, [
xcb_err="$xcb_err ${XCB_PKG_ERRORS}."])
PKG_CHECK_MODULES([XCB_COMPOSITE], [xcb-composite],, [
xcb_err="$xcb_err ${XCB_COMPOSITE_PKG_ERRORS}."])
......
......@@ -9,7 +9,7 @@ PKGS += xcb
endif
endif
ifeq ($(call need_pkg,"xcb >= 1.6 xcb-shm xcb-composite xcb-xv >= 1.1.90.1"),)
ifeq ($(call need_pkg,"xcb >= 1.8 xcb-shm xcb-composite xcb-xv >= 1.1.90.1"),)
# xcb-randr >= 1.3 is not that useful
PKGS_FOUND += xcb
endif
......
......@@ -53,6 +53,7 @@ typedef struct
{
xcb_connection_t *conn;
vlc_thread_t thread;
vlc_latch_t ready;
xcb_window_t root;
xcb_atom_t wm_state;
......@@ -330,13 +331,37 @@ static void *Thread (void *data)
.fd = xcb_get_file_descriptor(conn),
.events = POLLIN,
};
xcb_window_t window = wnd->handle.xid;
xcb_cursor_t cursor = CursorCreate(conn, p_sys->root); /* blank cursor */
vlc_tick_t lifetime = VLC_TICK_FROM_MS( var_InheritInteger(wnd, "mouse-hide-timeout") );
vlc_tick_t deadline = VLC_TICK_MAX;
xcb_generic_event_t *ev;
if (ufd.fd == -1)
return NULL;
/* Report initial pointer position. */
xcb_query_pointer_cookie_t qpc = xcb_query_pointer(conn, window);
/* Report initial window size (for the embedded case). */
xcb_get_geometry_cookie_t ggc = xcb_get_geometry(conn, window);
xcb_query_pointer_reply_t *qpr = xcb_query_pointer_reply(conn, qpc, NULL);
if (qpr != NULL) {
while ((ev = xcb_poll_for_queued_event(conn)) != NULL)
ProcessEvent(wnd, ev);
vlc_window_ReportMouseMoved(wnd, qpr->win_x, qpr->win_y);
free(qpr);
}
xcb_get_geometry_reply_t *geo = xcb_get_geometry_reply(conn, ggc, NULL);
if (geo != NULL) {
while ((ev = xcb_poll_for_queued_event(conn)) != NULL)
ProcessEvent(wnd, ev);
vlc_window_ReportSize(wnd, geo->width, geo->height);
free(geo);
}
vlc_latch_count_down(&p_sys->ready, 1);
for (;;)
{
int timeout = -1;
......@@ -353,14 +378,12 @@ static void *Thread (void *data)
if (val == 0)
{ /* timeout: hide cursor */
xcb_change_window_attributes(conn, wnd->handle.xid,
XCB_CW_CURSOR, &cursor);
xcb_change_window_attributes(conn, window, XCB_CW_CURSOR, &cursor);
xcb_flush(conn);
deadline = VLC_TICK_MAX;
}
else
{
xcb_generic_event_t *ev;
bool show_cursor = false;
while ((ev = xcb_poll_for_event (conn)) != NULL)
......@@ -368,8 +391,7 @@ static void *Thread (void *data)
if (show_cursor)
{
xcb_change_window_attributes(conn, wnd->handle.xid,
XCB_CW_CURSOR,
xcb_change_window_attributes(conn, window, XCB_CW_CURSOR,
&(uint32_t){ XCB_CURSOR_NONE });
xcb_flush(conn);
deadline = vlc_tick_now() + lifetime;
......@@ -538,6 +560,7 @@ static int Enable(vlc_window_t *wnd, const vlc_window_cfg_t *restrict cfg)
vout_window_sys_t *sys = wnd->sys;
xcb_connection_t *conn = sys->conn;
xcb_window_t window = wnd->handle.xid;
xcb_void_cookie_t ck;
/* Set initial window state */
if (cfg->is_decorated)
......@@ -552,21 +575,9 @@ static int Enable(vlc_window_t *wnd, const vlc_window_cfg_t *restrict cfg)
}
/* Make the window visible */
xcb_map_window(conn, window);
/* Report initial pointer position.
* This will implicitly flush the XCB connection so that the window gets
* mapped by the display server shortly.
*/
xcb_query_pointer_cookie_t qpc = xcb_query_pointer(conn, window);
xcb_query_pointer_reply_t *pr = xcb_query_pointer_reply(conn, qpc, NULL);
if (pr != NULL)
{
vlc_window_ReportMouseMoved(wnd, pr->win_x, pr->win_y);
free(pr);
}
ck = xcb_map_window_checked(conn, window);
free(xcb_request_check(conn, ck));
vlc_latch_wait(&sys->ready);
return VLC_SUCCESS;
}
......@@ -591,9 +602,8 @@ static const struct vlc_window_operations ops = {
.set_state = SetState,
};
static int OpenCommon(vlc_window_t *wnd, char *display,
xcb_connection_t *conn,
xcb_window_t root, xcb_window_t window)
static int OpenCommon(vlc_window_t *wnd, char *display, xcb_connection_t *conn,
xcb_window_t root, xcb_window_t window, uint32_t events)
{
vout_window_sys_t *sys = vlc_obj_malloc(VLC_OBJECT(wnd), sizeof (*sys));
if (sys == NULL)
......@@ -609,7 +619,7 @@ static int OpenCommon(vlc_window_t *wnd, char *display,
sys->root = root;
#ifdef HAVE_XKBCOMMON
if (var_InheritBool(wnd, "keyboard-events"))
if (events & XCB_EVENT_MASK_KEY_PRESS)
InitKeyboardExtension(wnd);
else
sys->xkb.ctx = NULL;
......@@ -680,6 +690,7 @@ static int OpenCommon(vlc_window_t *wnd, char *display,
sys->wm_state_fullscreen = get_atom(conn, wm_state_fs_ck);
sys->motif_wm_hints = get_atom(conn, motif_wm_hints_ck);
vlc_latch_init(&sys->ready, 1);
/* Create the event thread. It will dequeue all events, so any checked
* request from this thread must be completed at this point. */
if (vlc_clone(&sys->thread, Thread, wnd))
......@@ -733,10 +744,11 @@ static int Open(vlc_window_t *wnd)
/* XCB_CW_BACK_PIXEL */
scr->black_pixel,
/* XCB_CW_EVENT_MASK */
XCB_EVENT_MASK_KEY_PRESS | XCB_EVENT_MASK_POINTER_MOTION |
XCB_EVENT_MASK_STRUCTURE_NOTIFY,
XCB_EVENT_MASK_POINTER_MOTION | XCB_EVENT_MASK_STRUCTURE_NOTIFY,
};
if (var_InheritBool(wnd, "keyboard-events"))
values[1] |= XCB_EVENT_MASK_KEY_PRESS;
if (var_InheritBool(wnd, "mouse-events"))
values[1] |= XCB_EVENT_MASK_BUTTON_PRESS
| XCB_EVENT_MASK_BUTTON_RELEASE;
......@@ -754,7 +766,7 @@ static int Open(vlc_window_t *wnd)
goto error;
}
ret = OpenCommon(wnd, display, conn, scr->root, window);
ret = OpenCommon(wnd, display, conn, scr->root, window, values[1]);
if (ret != VLC_SUCCESS)
goto error;
......@@ -912,20 +924,18 @@ static int EmOpen (vlc_window_t *wnd)
goto error;
}
root = geo->root;
/* FIXME: racy - compare seq.no.with configure event */
vlc_window_ReportSize(wnd, geo->width, geo->height);
free (geo);
/* Try to subscribe to keyboard and mouse events (only one X11 client can
* subscribe to input events, so this can fail). */
value |= XCB_EVENT_MASK_KEY_PRESS;
if (var_InheritBool(wnd, "keyboard-events"))
value |= XCB_EVENT_MASK_KEY_PRESS;
if (var_InheritBool(wnd, "mouse-events"))
value |= XCB_EVENT_MASK_BUTTON_PRESS | XCB_EVENT_MASK_BUTTON_RELEASE;
xcb_change_window_attributes(conn, window, XCB_CW_EVENT_MASK, &value);
ret = OpenCommon(wnd, NULL, conn, root, window);
ret = OpenCommon(wnd, NULL, conn, root, window, value);
if (ret != VLC_SUCCESS)
goto error;
......