## ESourceExtension ESourceExtension — Base class for ESource extensions |

## Functions

ESource * | e_source_extension_ref_source ()
void | e_source_extension_property_lock ()
void | e_source_extension_property_unlock ()
ESource * | e_source_extension_get_source ()

## Types and Values

struct | ESourceExtension

## Object Hierarchy

        GObject
        ╰── ESourceExtension
            ├── ESourceBackend
            ├── ESourceAlarms
            ├── ESourceAuthentication
            ├── ESourceAutocomplete
            ├── ESourceAutoconfig
            ├── ESourceBackendSummarySetup
            ├── ESourceCamel
            ├── ESourceContacts
            ├── ESourceGoa
            ├── ESourceLDAP
            ├── ESourceLocal
            ├── ESourceMailComposition
            ├── ESourceMailIdentity
            ├── ESourceMailSignature
            ├── ESourceMailSubmission
            ├── ESourceMDN
            ├── ESourceOffline
            ├── ESourceOpenPGP
            ├── ESourceProxy
            ├── ESourceRefresh
            ├── ESourceResource
            ├── ESourceRevisionGuards
            ├── ESourceSecurity
            ├── ESourceSMIME
            ├── ESourceUoa
            ├── ESourceWeather
            ├── ESourceWebdav
            ╰── ESourceWebDAVNotes

## Includes

    #include <libedataserver/libedataserver.h>

## Description

ESourceExtension is an abstract base class for ESource extension objects. An ESourceExtension object basically just maps the keys in a key file group to a set of GObject properties. The name of the key file group doubles as the name of the ESourceExtension object.

ESourceExtension objects are accessed through `e_source_get_extension()`.

## Functions

### e_source_extension_ref_source ()

    ESource *
    e_source_extension_ref_source (ESourceExtension *extension);

Returns the ESource instance to which the `extension` belongs.

The returned ESource is referenced for thread-safety. Unreference the ESource with `g_object_unref()` when finished with it.

#### Parameters

extension | an ESourceExtension |

#### Returns

the ESource instance.

[transfer full]

Since: 3.8

### e_source_extension_property_lock ()

    void
    e_source_extension_property_lock (ESourceExtension *extension);

Acquires a property lock, thus no other thread can change properties of the `extension` until the lock is released.

#### Parameters

extension | an ESourceExtension |

Since: 3.18

### e_source_extension_property_unlock ()

    void
    e_source_extension_property_unlock (ESourceExtension *extension);

Releases a property lock, previously acquired with `e_source_extension_property_lock()`, thus other threads can change properties of the `extension` .

#### Parameters

extension | an ESourceExtension |

Since: 3.18

### e_source_extension_get_source ()

    ESource *
    e_source_extension_get_source (ESourceExtension *extension);

`e_source_extension_get_source` has been deprecated since version 3.8 and should not be used in newly-written code.

Use `e_source_extension_ref_source()` instead.

Returns the ESource instance to which `extension` belongs.

Note this function is not thread-safe. The returned ESource could be finalized by another thread while the caller is still using it.

#### Parameters

extension | an ESourceExtension |

#### Returns

the ESource instance.

[transfer none]

Since: 3.6

## Types and Values

### struct ESourceExtension

    struct ESourceExtension;

Contains only private data that should be read and manipulated using the functions below.

Since: 3.6