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 (6)
......@@ -3328,7 +3328,7 @@ AS_IF([test "${enable_wayland}" != "no"], [
wl_err=""
dnl wayland
PKG_CHECK_MODULES([WAYLAND_CLIENT], [wayland-client >= 1.5.91],, [
PKG_CHECK_MODULES([WAYLAND_CLIENT], [wayland-client >= 1.19.91],, [
wl_err="$wl_err ${WAYLAND_CLIENT_PKG_ERRORS}."
])
PKG_CHECK_MODULES([WAYLAND_CURSOR], [wayland-cursor],, [
......
......@@ -24,6 +24,7 @@
# include <config.h>
#endif
#include <assert.h>
#include <inttypes.h>
#include <stdlib.h>
#include <wayland-client.h>
......@@ -32,8 +33,6 @@
#include "output.h"
/* TODO: xdg_output protocol */
struct output_list
{
vout_window_t *owner;
......@@ -45,11 +44,16 @@ struct output_data
vout_window_t *owner;
struct wl_output *wl_output;
uint32_t name;
uint32_t id;
uint32_t version;
char *name;
char *description;
struct wl_list node;
};
static void output_done_cb(void *data, struct wl_output *output);
static void output_geometry_cb(void *data, struct wl_output *output,
int32_t x, int32_t y, int32_t w, int32_t h,
int32_t sp, const char *make, const char *model,
......@@ -57,19 +61,25 @@ static void output_geometry_cb(void *data, struct wl_output *output,
{
struct output_data *od = data;
vout_window_t *wnd = od->owner;
char idstr[11];
char *name;
msg_Dbg(wnd, "output %"PRIu32" geometry: %"PRId32"x%"PRId32"mm"
"+%"PRId32"+%"PRId32", subpixel %"PRId32", transform %"PRId32,
od->name, w, h, x, y, sp, transform);
od->id, w, h, x, y, sp, transform);
sprintf(idstr, "%"PRIu32, od->name);
if (likely(asprintf(&name, "%s - %s", make, model) >= 0))
if (od->version < WL_OUTPUT_NAME_SINCE_VERSION)
{
vout_window_ReportOutputDevice(wnd, idstr, name);
free(name);
free(od->name);
if (unlikely(asprintf(&od->name, "%"PRIu32, od->id) < 0))
od->name = NULL;
}
if (od->version < WL_OUTPUT_DESCRIPTION_SINCE_VERSION)
{
free(od->description);
if (unlikely(asprintf(&od->description, "%s - %s", make, model) < 0))
od->description = NULL;
}
(void) output;
}
......@@ -81,13 +91,27 @@ static void output_mode_cb(void *data, struct wl_output *output,
div_t d = div(vr, 1000);
msg_Dbg(wnd, "output %"PRIu32" mode: 0x%"PRIx32" %"PRId32"x%"PRId32
", %d.%03d Hz", od->name, flags, w, h, d.quot, d.rem);
", %d.%03d Hz", od->id, flags, w, h, d.quot, d.rem);
if (od->version < WL_OUTPUT_DONE_SINCE_VERSION)
output_done_cb(data, output); /* Ancient display server */
(void) output;
}
static void output_done_cb(void *data, struct wl_output *output)
{
(void) data; (void) output;
struct output_data *od = data;
vout_window_t *wnd = od->owner;
const char *name = od->name;
const char *description = od->description;
if (unlikely(description == NULL))
description = name;
if (likely(name != NULL))
vout_window_ReportOutputDevice(wnd, name, description);
(void) output;
}
static void output_scale_cb(void *data, struct wl_output *output, int32_t f)
......@@ -95,16 +119,39 @@ static void output_scale_cb(void *data, struct wl_output *output, int32_t f)
struct output_data *od = data;
vout_window_t *wnd = od->owner;
msg_Dbg(wnd, "output %"PRIu32" scale: %"PRId32, od->name, f);
msg_Dbg(wnd, "output %"PRIu32" scale: %"PRId32, od->id, f);
(void) output;
}
static void output_name_cb(void *data, struct wl_output *output,
const char *name)
{
struct output_data *od = data;
free(od->name);
od->name = strdup(name);
(void) output;
}
static void output_description_cb(void *data, struct wl_output *output,
const char *description)
{
struct output_data *od = data;
free(od->description);
od->description = strdup(description);
(void) output;
}
static const struct wl_output_listener wl_output_cbs =
{
output_geometry_cb,
output_mode_cb,
output_done_cb,
output_scale_cb,
output_name_cb,
output_description_cb,
};
struct output_list *output_list_create(vout_window_t *wnd)
......@@ -118,42 +165,53 @@ struct output_list *output_list_create(vout_window_t *wnd)
return ol;
}
int output_create(struct output_list *ol, struct wl_registry *registry,
uint32_t name, uint32_t version)
struct wl_output *output_create(struct output_list *ol,
struct wl_registry *registry,
uint32_t id, uint32_t version)
{
if (unlikely(ol == NULL))
return -1;
return NULL;
struct output_data *od = malloc(sizeof (*od));
if (unlikely(od == NULL))
return -1;
return NULL;
if (version > 3)
version = 3;
od->wl_output = wl_registry_bind(registry, name, &wl_output_interface,
version);
if (unlikely(od->wl_output == NULL))
struct wl_output *wo = wl_registry_bind(registry, id,
&wl_output_interface, version);
if (unlikely(wo == NULL))
{
free(od);
return -1;
return NULL;
}
od->wl_output = wo;
od->owner = ol->owner;
od->name = name;
od->id = id;
od->version = version;
od->name = NULL;
od->description = NULL;
wl_output_add_listener(od->wl_output, &wl_output_cbs, od);
wl_output_add_listener(wo, &wl_output_cbs, od);
wl_list_insert(&ol->outputs, &od->node);
return 0;
return wo;
}
static void output_destroy(struct output_list *ol, struct output_data *od)
void output_destroy(struct output_list *ol, struct wl_output *wo)
{
char idstr[11];
assert(ol != NULL);
assert(wo != NULL);
struct output_data *od = wl_output_get_user_data(wo);
sprintf(idstr, "%"PRIu32, od->name);
vout_window_ReportOutputDevice(ol->owner, idstr, NULL);
free(od->description);
if (od->name != NULL) {
vout_window_ReportOutputDevice(ol->owner, od->name, NULL);
free(od->name);
}
wl_list_remove(&od->node);
......@@ -164,25 +222,35 @@ static void output_destroy(struct output_list *ol, struct output_data *od)
free(od);
}
int output_destroy_by_name(struct output_list *ol, uint32_t name)
struct wl_output *output_find_by_id(struct output_list *ol, uint32_t id)
{
if (unlikely(ol == NULL))
return -1;
return NULL;
struct wl_list *list = &ol->outputs;
struct output_data *od;
wl_list_for_each(od, list, node)
{
if (od->name == name)
{
output_destroy(ol, od);
/* Note: return here so no needs for safe walk variant */
return 0;
}
}
if (od->id == id)
return od->wl_output;
return NULL;
}
struct wl_output *output_find_by_name(struct output_list *ol, const char *name)
{
if (unlikely(ol == NULL))
return NULL;
struct wl_list *list = &ol->outputs;
struct output_data *od;
wl_list_for_each(od, list, node)
if (strcmp(od->name, name) == 0)
return od->wl_output;
return NULL;
return -1;
}
void output_list_destroy(struct output_list *ol)
......@@ -192,8 +260,11 @@ void output_list_destroy(struct output_list *ol)
struct wl_list *list = &ol->outputs;
while (!wl_list_empty(list))
output_destroy(ol, container_of(list->next, struct output_data, node));
while (!wl_list_empty(list)) {
struct output_data *od = container_of(list->next, struct output_data,
node);
output_destroy(ol, od->wl_output);
}
free(ol);
}
......@@ -23,7 +23,10 @@ struct wl_registry;
struct output_list;
struct output_list *output_list_create(struct vout_window_t *wnd);
int output_create(struct output_list *, struct wl_registry *,
uint32_t name, uint32_t version);
int output_destroy_by_name(struct output_list *, uint32_t name);
void output_list_destroy(struct output_list *);
struct wl_output *output_create(struct output_list *, struct wl_registry *,
uint32_t id, uint32_t version);
struct wl_output *output_find_by_id(struct output_list *, uint32_t id);
struct wl_output *output_find_by_name(struct output_list *, const char *name);
void output_destroy(struct output_list *, struct wl_output *);
......@@ -219,24 +219,12 @@ static void SetFullscreen(vout_window_t *wnd, const char *idstr)
struct wl_output *output = NULL;
if (idstr != NULL)
{
char *end;
unsigned long name = strtoul(idstr, &end, 10);
assert(*end == '\0' && name <= UINT32_MAX);
output = wl_registry_bind(sys->registry, name,
&wl_output_interface, 1);
}
output = output_find_by_name(sys->outputs, idstr);
else
if (sys->default_output != 0)
output = wl_registry_bind(sys->registry, sys->default_output,
&wl_output_interface, 1);
output = output_find_by_id(sys->outputs, sys->default_output);
xdg_toplevel_set_fullscreen(sys->toplevel, output);
if (output != NULL)
wl_output_destroy(output);
wl_display_flush(wnd->display.wl);
}
......@@ -509,7 +497,7 @@ struct registry_handler
static const struct registry_handler global_handlers[] =
{
{ "wl_compositor", register_wl_compositor, 2 },
{ "wl_output", register_wl_output, 1},
{ "wl_output", register_wl_output, 4 },
{ "wl_seat", register_wl_seat, UINT32_C(-1) },
#ifndef XDG_SHELL
{ "wl_shell", register_wl_shell, 1 },
......@@ -557,8 +545,12 @@ static void registry_global_remove_cb(void *data, struct wl_registry *registry,
if (seat_destroy_one(&sys->seats, name) == 0)
return;
if (output_destroy_by_name(sys->outputs, name) == 0)
struct wl_output *output = output_find_by_id(sys->outputs, name);
if (output != NULL) {
output_destroy(sys->outputs, output);
return;
}
(void) registry;
}
......