Clapper – 0.0: Migrating to Clapper 0.10
Description: Reference for Clapper-0.0: Migrating to Clapper 0.10

#### Migrating to Clapper 0.10

### Replace Features with Enhancers

Clapper 0.10 deprecates `ClapperFeature` objects in favour Clapper Enhancers used via `ClapperEnhancerProxy`.

Old `ClapperFeature` objects (including `mpris`, `discoverer` and `server`) are left for compatibility reasons, but all apps using them are advised to migrate to enhancer plugins which already surpassed former ones in what can be achieved with them.

Since these are in the form of plugins scanned during init, one of the differences is that you now check their availability at runtime instead of compile time like before.

Something like this:

    #if CLAPPER_HAVE_MPRIS
      ClapperFeature *feature = CLAPPER_FEATURE (clapper_mpris_new (
          mpris_name, APP_NAME, APP_ID));
      clapper_player_add_feature (player, feature);
      gst_object_unref (feature);
    #endif

Can be implemented like this:

    ClapperEnhancerProxyList *proxies = clapper_player_get_enhancer_proxies (player);
    ClapperEnhancerProxy *proxy = clapper_enhancer_proxy_list_get_proxy_by_module (proxies, "clapper-mpris");

    if (proxy) {
      clapper_enhancer_proxy_set_locally (proxy,
          "app-id", APP_ID,
          "own-name", mpris_name,
          "identity", APP_NAME,
          "desktop-entry", APP_ID, NULL);
      clapper_enhancer_proxy_set_target_creation_allowed (proxy, TRUE);
      gst_object_unref (proxy);
    }

For more information how to use enhancers and how to write your own, see Clapper Enhancers documentation.