summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Baker <steve@stevebaker.org>2001-09-17 19:15:53 +0000
committerSteve Baker <steve@stevebaker.org>2001-09-17 19:15:53 +0000
commitc4630dfcee5ca649d3759438c9285df2647fab39 (patch)
treea6a5100cfce3731148a8a1409f57981235075a8e
parent312e46a540589f77b978632e2434526ad0b9e6b1 (diff)
downloadgstreamer-c4630dfcee5ca649d3759438c9285df2647fab39.tar.gz
init the values when the state hits playing so that we don't do dum things like log(0)
Original commit message from CVS: init the values when the state hits playing so that we don't do dum things like log(0)
-rw-r--r--gst/gstdparammanager.c32
1 files changed, 18 insertions, 14 deletions
diff --git a/gst/gstdparammanager.c b/gst/gstdparammanager.c
index 8f25a9b8e4..41e1dfeaa4 100644
--- a/gst/gstdparammanager.c
+++ b/gst/gstdparammanager.c
@@ -540,23 +540,27 @@ gst_dpman_state_change (GstElement *element, gint state, GstDParamManager *dpman
GSList *dwraps;
GstDParam *dparam;
GstDParamWrapper *dpwrap;
-
- if (state == GST_STATE_PLAYING) return;
- GST_DEBUG(GST_CAT_PARAMS, "initialising params\n");
-
+
g_return_if_fail (dpman != NULL);
g_return_if_fail (GST_IS_DPMAN (dpman));
-
- // force all params to be updated
- dwraps = GST_DPMAN_DPARAMS_LIST(dpman);
- while (dwraps){
- dpwrap = (GstDParamWrapper*)dwraps->data;
- dparam = dpwrap->dparam;
-
- if (dparam){
- GST_DPARAM_READY_FOR_UPDATE(dparam) = TRUE;
+
+ if (state == GST_STATE_PLAYING){
+ GST_DEBUG(GST_CAT_PARAMS, "initialising params\n");
+
+ // force all params to be updated
+ dwraps = GST_DPMAN_DPARAMS_LIST(dpman);
+ while (dwraps){
+ dpwrap = (GstDParamWrapper*)dwraps->data;
+ dparam = dpwrap->dparam;
+
+ if (dparam){
+ GST_DPARAM_READY_FOR_UPDATE(dparam) = TRUE;
+ if (dparam->spec){
+ g_value_copy(dparam->spec->default_val, GST_DPARAM_VALUE(dparam));
+ }
+ }
+ dwraps = g_slist_next(dwraps);
}
- dwraps = g_slist_next(dwraps);
}
}