static void update_effect_sensitivity (App * app) { GList *i; gboolean ok = TRUE; /* effects will work for multiple FileSource */ for (i = app->selected_objects; i; i = i->next) { if (!GES_IS_URI_CLIP (i->data)) { ok = FALSE; break; } } gtk_action_set_sensitive (app->add_effect, ok && (app->n_selected > 0) && (app->state != GST_STATE_PLAYING) && (app->state != GST_STATE_PAUSED)); }
static void asset_created_cb (GObject * source, GAsyncResult * res, gpointer udata) { GList *tracks, *tmp; GESAsset *asset; GESLayer *layer; GESUriClip *tlfs; GError *error = NULL; asset = ges_asset_request_finish (res, &error); ASSERT_OBJECT_REFCOUNT (asset, "1 for us + for the cache + 1 taken " "by g_simple_async_result_complete_in_idle", 3); fail_unless (error == NULL); fail_if (asset == NULL); fail_if (g_strcmp0 (ges_asset_get_id (asset), av_uri)); layer = GES_LAYER (g_async_result_get_user_data (res)); tlfs = GES_URI_CLIP (ges_layer_add_asset (layer, asset, 0, 0, GST_CLOCK_TIME_NONE, GES_TRACK_TYPE_UNKNOWN)); fail_unless (GES_IS_URI_CLIP (tlfs)); fail_if (g_strcmp0 (ges_uri_clip_get_uri (tlfs), av_uri)); assert_equals_uint64 (_DURATION (tlfs), GST_SECOND); fail_unless (ges_clip_get_supported_formats (GES_CLIP (tlfs)) & GES_TRACK_TYPE_VIDEO); fail_unless (ges_clip_get_supported_formats (GES_CLIP (tlfs)) & GES_TRACK_TYPE_AUDIO); tracks = ges_timeline_get_tracks (ges_layer_get_timeline (layer)); for (tmp = tracks; tmp; tmp = tmp->next) { GList *trackelements = ges_track_get_elements (GES_TRACK (tmp->data)); assert_equals_int (g_list_length (trackelements), 1); fail_unless (GES_IS_VIDEO_URI_SOURCE (trackelements->data) || GES_IS_AUDIO_URI_SOURCE (trackelements->data)); g_list_free_full (trackelements, gst_object_unref); } g_list_free_full (tracks, gst_object_unref); gst_object_unref (asset); g_main_loop_quit (mainloop); }