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
404 results
Show changes
Commits on Source (5)
......@@ -26,6 +26,11 @@
struct vlc_plugin_t;
struct vlc_param {
union {
_Atomic int64_t i; /**< Current value (if integer or boolean) */
_Atomic float f; /**< Current value (if floating point) */
} value;
struct vlc_plugin_t *owner;
unsigned char shortname; /**< Optional short option name */
unsigned internal:1; /**< Hidden from preferences and help */
......@@ -56,7 +61,7 @@ int config_SortConfig (void);
void config_UnsortConfig (void);
extern vlc_rwlock_t config_lock;
extern bool config_dirty;
extern _Atomic bool config_dirty;
bool config_IsSafe (const char *);
......
......@@ -24,6 +24,7 @@
# include "config.h"
#endif
#include <stdatomic.h>
#include <vlc_common.h>
#include <vlc_actions.h>
#include <vlc_modules.h>
......@@ -38,7 +39,7 @@
#include "modules/modules.h"
vlc_rwlock_t config_lock = VLC_STATIC_RWLOCK;
bool config_dirty = false;
atomic_bool config_dirty = ATOMIC_VAR_INIT(false);
static inline char *strdupnull (const char *src)
{
......@@ -84,38 +85,26 @@ static module_config_t * config_FindConfigChecked( const char *psz_name )
return p_config;
}
int64_t config_GetInt(const char *psz_name)
int64_t config_GetInt(const char *name)
{
module_config_t *p_config = config_FindConfigChecked( psz_name );
const struct vlc_param *param = vlc_param_Find(name);
/* sanity checks */
assert(p_config != NULL);
assert(IsConfigIntegerType(p_config->i_type));
assert(param != NULL);
assert(IsConfigIntegerType(param->item.i_type));
int64_t val;
vlc_rwlock_rdlock (&config_lock);
val = p_config->value.i;
vlc_rwlock_unlock (&config_lock);
return val;
return atomic_load_explicit(&param->value.i, memory_order_relaxed);
}
float config_GetFloat(const char *psz_name)
float config_GetFloat(const char *name)
{
module_config_t *p_config;
p_config = config_FindConfigChecked( psz_name );
const struct vlc_param *param = vlc_param_Find(name);
/* sanity checks */
assert(p_config != NULL);
assert(IsConfigFloatType(p_config->i_type));
assert(param != NULL);
assert(IsConfigFloatType(param->item.i_type));
float val;
vlc_rwlock_rdlock (&config_lock);
val = p_config->value.f;
vlc_rwlock_unlock (&config_lock);
return val;
return atomic_load_explicit(&param->value.f, memory_order_relaxed);
}
char *config_GetPsz(const char *psz_name)
......@@ -151,38 +140,41 @@ void config_PutPsz(const char *psz_name, const char *psz_value)
vlc_rwlock_wrlock (&config_lock);
oldstr = (char *)p_config->value.psz;
p_config->value.psz = str;
config_dirty = true;
vlc_rwlock_unlock (&config_lock);
atomic_store_explicit(&config_dirty, true, memory_order_release);
free (oldstr);
}
void config_PutInt(const char *psz_name, int64_t i_value )
void config_PutInt(const char *name, int64_t i_value)
{
module_config_t *p_config = config_FindConfigChecked( psz_name );
struct vlc_param *param = vlc_param_Find(name);
module_config_t *p_config = &param->item;
/* sanity checks */
assert(p_config != NULL);
assert(IsConfigIntegerType(p_config->i_type));
assert(param != NULL);
assert(IsConfigIntegerType(param->item.i_type));
if (i_value < p_config->min.i)
i_value = p_config->min.i;
if (i_value > p_config->max.i)
i_value = p_config->max.i;
atomic_store_explicit(&param->value.i, i_value, memory_order_relaxed);
vlc_rwlock_wrlock (&config_lock);
p_config->value.i = i_value;
config_dirty = true;
vlc_rwlock_unlock (&config_lock);
atomic_store_explicit(&config_dirty, true, memory_order_release);
}
void config_PutFloat(const char *psz_name, float f_value)
void config_PutFloat(const char *name, float f_value)
{
module_config_t *p_config = config_FindConfigChecked( psz_name );
struct vlc_param *param = vlc_param_Find(name);
module_config_t *p_config = &param->item;
/* sanity checks */
assert(p_config != NULL);
assert(IsConfigFloatType(p_config->i_type));
assert(param != NULL);
assert(IsConfigFloatType(param->item.i_type));
/* if f_min == f_max == 0, then do not use them */
if ((p_config->min.f == 0.f) && (p_config->max.f == 0.f))
......@@ -192,10 +184,11 @@ void config_PutFloat(const char *psz_name, float f_value)
else if (f_value > p_config->max.f)
f_value = p_config->max.f;
atomic_store_explicit(&param->value.f, f_value, memory_order_relaxed);
vlc_rwlock_wrlock (&config_lock);
p_config->value.f = f_value;
config_dirty = true;
vlc_rwlock_unlock (&config_lock);
atomic_store_explicit(&config_dirty, true, memory_order_release);
}
ssize_t config_GetIntChoices(const char *name,
......@@ -507,10 +500,18 @@ void config_ResetAll(void)
module_config_t *p_config = &param->item;
if (IsConfigIntegerType (p_config->i_type))
{
atomic_store_explicit(&param->value.i, p_config->orig.i,
memory_order_relaxed);
p_config->value.i = p_config->orig.i;
}
else
if (IsConfigFloatType (p_config->i_type))
{
atomic_store_explicit(&param->value.f, p_config->orig.f,
memory_order_relaxed);
p_config->value.f = p_config->orig.f;
}
else
if (IsConfigStringType (p_config->i_type))
{
......@@ -520,6 +521,6 @@ void config_ResetAll(void)
}
}
}
config_dirty = true;
vlc_rwlock_unlock (&config_lock);
atomic_store_explicit(&config_dirty, true, memory_order_release);
}
......@@ -27,6 +27,7 @@
#include <errno.h> /* errno */
#include <assert.h>
#include <limits.h>
#include <stdatomic.h>
#include <fcntl.h>
#include <sys/stat.h>
#ifdef __APPLE__
......@@ -230,15 +231,25 @@ int config_LoadConfigFile( vlc_object_t *p_this )
psz_option_value, psz_option_name,
vlc_strerror_c(errno));
else
{
atomic_store_explicit(&param->value.i, l,
memory_order_relaxed);
item->value.i = l;
}
break;
}
case CONFIG_ITEM_FLOAT:
{
if (!*psz_option_value)
break; /* ignore empty option */
item->value.f = (float)atof (psz_option_value);
float f = (float)atof(psz_option_value);
atomic_store_explicit(&param->value.f, f,
memory_order_relaxed);
item->value.f = f;
break;
}
default:
free (item->value.psz);
......@@ -452,7 +463,8 @@ int config_SaveConfigFile (vlc_object_t *p_this)
if (IsConfigIntegerType (p_item->i_type))
{
int64_t val = p_item->value.i;
int64_t val = atomic_load_explicit(&param->value.i,
memory_order_relaxed);
config_Write (file, p_item->psz_text,
(CONFIG_CLASS(p_item->i_type) == CONFIG_ITEM_BOOL)
? N_("boolean") : N_("integer"),
......@@ -462,7 +474,8 @@ int config_SaveConfigFile (vlc_object_t *p_this)
else
if (IsConfigFloatType (p_item->i_type))
{
float val = p_item->value.f;
float val = atomic_load_explicit(&param->value.f,
memory_order_relaxed);
config_Write (file, p_item->psz_text, N_("float"),
val == p_item->orig.f,
p_item->psz_name, "%f", val);
......@@ -530,18 +543,20 @@ error:
int config_AutoSaveConfigFile( vlc_object_t *p_this )
{
int ret = 0;
assert( p_this );
vlc_rwlock_rdlock (&config_lock);
if (config_dirty)
{
/* Note: this will get the read lock recursively. Ok. */
ret = config_SaveConfigFile (p_this);
config_dirty = (ret != 0);
}
vlc_rwlock_unlock (&config_lock);
if (!atomic_exchange_explicit(&config_dirty, false, memory_order_acquire))
return 0;
int ret = config_SaveConfigFile (p_this);
if (unlikely(ret != 0))
/*
* On write failure, set the dirty flag back again. While it looks
* racy, it really means to retry later in hope that it does not
* fail again. Concurrent write attempts would not succeed anyway.
*/
atomic_store_explicit(&config_dirty, true, memory_order_relaxed);
return ret;
}
......@@ -22,6 +22,7 @@
# include "config.h"
#endif
#include <stdatomic.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
......@@ -485,8 +486,8 @@ static void print_item(const module_t *m, const struct vlc_param *param,
case CONFIG_ITEM_BOOL:
bra = type = ket = "";
prefix = ", --no-";
suffix = item->value.i ? _("(default enabled)")
: _("(default disabled)");
suffix = item->orig.i ? _("(default enabled)")
: _("(default disabled)");
break;
default:
return;
......
......@@ -28,6 +28,7 @@
#endif
#include <stdalign.h>
#include <stdatomic.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
......@@ -216,6 +217,12 @@ static int vlc_cache_load_config(struct vlc_param *param, block_t *file)
LOAD_IMMEDIATE (cfg->orig);
LOAD_IMMEDIATE (cfg->min);
LOAD_IMMEDIATE (cfg->max);
if (IsConfigFloatType(cfg->i_type))
atomic_store_explicit(&param->value.f, cfg->orig.f,
memory_order_relaxed);
else
atomic_store_explicit(&param->value.i, cfg->orig.i,
memory_order_relaxed);
cfg->value = cfg->orig;
if (cfg->list_count)
......
......@@ -23,6 +23,7 @@
# include "config.h"
#endif
#include <stdatomic.h>
#include <vlc_common.h>
#include <vlc_plugin.h>
#include <assert.h>
......@@ -329,14 +330,18 @@ static int vlc_plugin_desc_cb(void *ctx, void *tgt, int propid, ...)
if (IsConfigIntegerType(item->i_type)
|| !CONFIG_ITEM(item->i_type))
{
item->orig.i =
item->value.i = va_arg (ap, int64_t);
item->orig.i = va_arg(ap, int64_t);
item->value.i = item->orig.i;
atomic_store_explicit(&param->value.i, item->orig.i,
memory_order_relaxed);
}
else
if (IsConfigFloatType (item->i_type))
{
item->orig.f =
item->value.f = va_arg (ap, double);
item->orig.f = va_arg(ap, double);
item->value.f = item->orig.f;
atomic_store_explicit(&param->value.f, item->orig.f,
memory_order_relaxed);
}
else
if (IsConfigStringType (item->i_type))
......