27 referenceFreqs(250,5000),
31 lastKnownPlayingTime(0),
46 lastKnownPlayingTime = timestamp;
54 startPlayingImpl( setLastKnownPlayingTime(
start) );
66 if (rendererDataPtr.get() &&
isActive()) {
72 if (sourceListenerPtr.get() != 0 && sourceListenerPtr->wantPlayEvents())
73 sourceListenerPtr->onPrePlay(*
this,
false);
75 rendererDataPtr->stopPlaying();
78 if (sourceListenerPtr.get() != 0 && sourceListenerPtr->wantPlayEvents())
79 sourceListenerPtr->onPostPlay(*
this,
false);
87 if (sourceListenerPtr.get() != 0 && sourceListenerPtr->wantPlayEvents())
88 sourceListenerPtr->onPrePlay(*
this,
true);
93 if (sourceListenerPtr.get() != 0 && sourceListenerPtr->wantPlayEvents())
94 sourceListenerPtr->onPrePlay(*
this,
true);
102 if (rendererDataPtr.get() &&
isActive())
103 return rendererDataPtr->getPlayingTime();
114 if (rendererDataPtr.get() &&
isActive())
115 return rendererDataPtr->getPlayingTime();
132 return rendererDataPtr.get() && rendererDataPtr->isPlaying();
148 dirty.attributes = 1;
154 if (rendererDataPtr.get()) {
157 if (!dirty.attributes)
166 if (sourceListenerPtr.get() != 0 && sourceListenerPtr->wantUpdateEvents())
167 sourceListenerPtr->onUpdate(*
this, flags);
169 rendererDataPtr->update(flags, sceneListener);
177 dirty.attributes = 0;
188 dirty.attributes = 0;
199 if (sourceListenerPtr.get() != 0 && sourceListenerPtr->wantAttachEvents())
200 sourceListenerPtr->onPreAttach(*
this, ptr.get() != 0);
202 rendererDataPtr = ptr;
205 if (sourceListenerPtr.get() != 0 && sourceListenerPtr->wantAttachEvents())
206 sourceListenerPtr->onPostAttach(*
this, ptr.get() != 0);
212 if (rendererDataPtr.get() && isPlaying() && isActive()) {
213 rendererDataPtr->seek(time);
215 setLastKnownPlayingTime(time);