## FsElementAddedNotifier

FsElementAddedNotifier — Recursive element addition notifier

## Synopsis

    #include <farstream/fs-element-added-notifier.h>

    struct              FsElementAddedNotifier;
    FsElementAddedNotifier * fs_element_added_notifier_new  (void);
    void                fs_element_added_notifier_add       (FsElementAddedNotifier *notifier,
                                                             GstBin *bin);
    gboolean            fs_element_added_notifier_remove    (FsElementAddedNotifier *notifier,
                                                             GstBin *bin);
    void                fs_element_added_notifier_set_properties_from_keyfile
                                                            (FsElementAddedNotifier *notifier,
                                                             GKeyFile *keyfile);
    gboolean            fs_element_added_notifier_set_properties_from_file
                                                            (FsElementAddedNotifier *notifier,
                                                             const gchar *filename,
                                                             GError **error);
    void                fs_element_added_notifier_set_default_properties
                                                            (FsElementAddedNotifier *notifier,
                                                             GstElement *element);

## Object Hierarchy

      GObject
       +----FsElementAddedNotifier

## Signals

      "element-added"                                  : Run Last

## Description

This object can be attach to any GstBin and will emit a the "element-added" signal for every element inside the GstBin or any sub-bin and any element added in the future to the bin or its sub-bins. There is also a utility method to have it used to set the properties of elements based on a GKeyfile.

## Details

### struct FsElementAddedNotifier

    struct FsElementAddedNotifier;

All members are private

### fs_element_added_notifier_new ()

    FsElementAddedNotifier * fs_element_added_notifier_new  (void);

Creates a new FsElementAddedNotifier object

Returns : | the newly-created FsElementAddedNotifier

### fs_element_added_notifier_add ()

    void                fs_element_added_notifier_add       (FsElementAddedNotifier *notifier,
                                                             GstBin *bin);

Add a GstBin to on which the "element-added" signal will be called on every element and sub-element present and added in the future.

`notifier` : | a FsElementAddedNotifier
`bin` : | A GstBin to watch to added elements

### fs_element_added_notifier_remove ()

    gboolean            fs_element_added_notifier_remove    (FsElementAddedNotifier *notifier,
                                                             GstBin *bin);

Stop watching the passed bin and its subbins.

`notifier` : | a FsElementAddedNotifier
`bin` : | A GstBin to stop watching
Returns : | `TRUE` if the GstBin was being watched, `FALSE` otherwise

### fs_element_added_notifier_set_properties_from_keyfile ()

    void                fs_element_added_notifier_set_properties_from_keyfile
                                                            (FsElementAddedNotifier *notifier,
                                                             GKeyFile *keyfile);

Using a GKeyFile where the groups are the element's type or name and the key=value are the property and its value, this function will set the properties on the elements added to this object after this function has been called. It will take ownership of the GKeyFile structure. It will first try the group as the element type, if that does not match, it will check its name.

`notifier` : | a FsElementAddedNotifier
`keyfile` : | a GKeyFile

### fs_element_added_notifier_set_properties_from_file ()

    gboolean            fs_element_added_notifier_set_properties_from_file
                                                            (FsElementAddedNotifier *notifier,
                                                             const gchar *filename,
                                                             GError **error);

Same as `fs_element_added_notifier_set_properties_from_keyfile()` but using the name of the file to load instead of the GKeyFile directly.

`notifier` : | a FsElementAddedNotifier
`filename` : | The name of the keyfile to use
`error` : | location of a GError, or `NULL` if no error occured
Returns : | `TRUE` if the file was successfully loaded, `FALSE` otherwise

### fs_element_added_notifier_set_default_properties ()

    void                fs_element_added_notifier_set_default_properties
                                                            (FsElementAddedNotifier *notifier,
                                                             GstElement *element);

Same as first calling `fs_utils_get_default_element_properties()` and using the result with `fs_element_added_notifier_set_properties_from_keyfile()` .

This is binding friendly (since GKeyFile doesn't have a boxed type).

`notifier` : | a FsElementAddedNotifier
`element` : | Element for which to set the default codec preferences

## Signal Details

### The `"element-added"` signal

    void                user_function                      (FsElementAddedNotifier *self,
                                                            GstBin                 *bin,
                                                            GstElement             *element,
                                                            gpointer                user_data)      : Run Last

This signal is emitted when an element is added to a GstBin that was added to this object or one of its sub-bins. Be careful, there is no guarantee that this will be emitted on your main thread, it will be emitted in the thread that added the element. The bin may be `NULL` if this is the top-level bin.

`self` : | FsElementAddedNotifier that emitted the signal
`bin` : | The GstBin to which this object was added
`element` : | The GstElement that was added
`user_data` : | user data set when the signal handler was connected.