diff options
author | Steve Baker <steve@stevebaker.org> | 2001-09-17 19:15:53 +0000 |
---|---|---|
committer | Steve Baker <steve@stevebaker.org> | 2001-09-17 19:15:53 +0000 |
commit | c4630dfcee5ca649d3759438c9285df2647fab39 (patch) | |
tree | a6a5100cfce3731148a8a1409f57981235075a8e | |
parent | 312e46a540589f77b978632e2434526ad0b9e6b1 (diff) | |
download | gstreamer-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.c | 32 |
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); } } |