VLC 4.0.0-dev
objres.c File Reference
Include dependency graph for objres.c:

Data Structures

struct  vlc_res
 

Functions

static struct vlc_res ** vlc_obj_res (vlc_object_t *obj)
 
void * vlc_objres_new (size_t size, void(*release)(void *))
 Allocates an object resource. More...
 
void vlc_objres_push (vlc_object_t *obj, void *data)
 Pushes an object resource on the object resources stack. More...
 
static void * vlc_objres_pop (vlc_object_t *obj)
 
void vlc_objres_clear (vlc_object_t *obj)
 Releases all resources of an object. More...
 
void vlc_objres_remove (vlc_object_t *obj, void *data, bool(*match)(void *, void *))
 Releases one object resource explicitly. More...
 
static void dummy_release (void *data)
 
static bool ptrcmp (void *a, void *b)
 
void *() vlc_obj_malloc (vlc_object_t *obj, size_t size)
 
void *() vlc_obj_calloc (vlc_object_t *obj, size_t nmemb, size_t size)
 
static void * vlc_obj_memdup (vlc_object_t *obj, const void *base, size_t len)
 
char *() vlc_obj_strdup (vlc_object_t *obj, const char *str)
 
void() vlc_obj_free (vlc_object_t *obj, void *ptr)
 

Function Documentation

◆ dummy_release()

static void dummy_release ( void *  data)
static

Referenced by vlc_obj_malloc().

◆ ptrcmp()

static bool ptrcmp ( void *  a,
void *  b 
)
static

Referenced by vlc_obj_free().

◆ vlc_obj_calloc()

void *() vlc_obj_calloc ( vlc_object_t obj,
size_t  nmemb,
size_t  size 
)

◆ vlc_obj_free()

void() vlc_obj_free ( vlc_object_t obj,
void *  ptr 
)

References ptrcmp(), and vlc_objres_remove().

◆ vlc_obj_malloc()

void *() vlc_obj_malloc ( vlc_object_t obj,
size_t  size 
)

◆ vlc_obj_memdup()

static void * vlc_obj_memdup ( vlc_object_t obj,
const void *  base,
size_t  len 
)
static

References likely, and vlc_obj_malloc().

Referenced by vlc_obj_strdup().

◆ vlc_obj_res()

static struct vlc_res ** vlc_obj_res ( vlc_object_t obj)
static

◆ vlc_obj_strdup()

char *() vlc_obj_strdup ( vlc_object_t obj,
const char *  str 
)

References vlc_obj_memdup().

◆ vlc_objres_clear()

void vlc_objres_clear ( vlc_object_t obj)

Releases all resources of an object.

All resources added with vlc_objres_add() are released in reverse order. The resource list is reset to empty.

Parameters
objobject whose resources to release

References container_of, vlc_res::payload, vlc_res::release, and vlc_objres_pop().

Referenced by decoder_device_Open(), demux_Probe(), generic_start(), module_unneed(), vlc_decoder_device_Create(), vlc_decoder_device_Release(), vlc_encoder_Destroy(), vlc_gl_Delete(), vlc_gl_start(), vlc_tls_ClientCreate(), vlc_tls_ClientDelete(), vlc_tls_ServerCreate(), vlc_tls_ServerDelete(), vlc_window_Delete(), vlc_window_start(), vout_display_Delete(), and vout_display_New().

◆ vlc_objres_new()

void * vlc_objres_new ( size_t  size,
void(*)(void *)  release 
)

Allocates an object resource.

Parameters
sizestorage size in bytes of the resource data
releasecallback to release the resource
Returns
a pointer to the (uninitialized) storage space, or NULL on error

References add_overflow, vlc_res::payload, vlc_res::release, and unlikely.

Referenced by vlc_obj_malloc().

◆ vlc_objres_pop()

static void * vlc_objres_pop ( vlc_object_t obj)
static

◆ vlc_objres_push()

void vlc_objres_push ( vlc_object_t obj,
void *  data 
)

Pushes an object resource on the object resources stack.

Parameters
objobject to allocate the resource for
dataresource base address (as returned by vlc_objres_new())

References container_of, vlc_res::payload, vlc_res::prev, and vlc_obj_res().

Referenced by vlc_obj_malloc().

◆ vlc_objres_remove()

void vlc_objres_remove ( vlc_object_t obj,
void *  data,
bool(*)(void *, void *)  match 
)

Releases one object resource explicitly.

If a resource associated with an object needs to be released explicitly earlier than normal, call this function. This is relatively slow and should be avoided.

Parameters
objobject whose resource to release
dataprivate data for the comparison function
matchcomparison function to match the targeted resource

References vlc_res::payload, vlc_res::prev, vlc_res::release, and vlc_obj_res().

Referenced by vlc_obj_free().