summaryrefslogtreecommitdiff
path: root/src/xine-engine/metronom.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/xine-engine/metronom.c')
-rw-r--r--src/xine-engine/metronom.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/xine-engine/metronom.c b/src/xine-engine/metronom.c
index 416d74467..5846e5408 100644
--- a/src/xine-engine/metronom.c
+++ b/src/xine-engine/metronom.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: metronom.c,v 1.74 2002/03/23 18:56:56 guenter Exp $
+ * $Id: metronom.c,v 1.75 2002/03/24 14:15:37 guenter Exp $
*/
#ifdef HAVE_CONFIG_H
@@ -573,15 +573,23 @@ static int metronom_register_scr (metronom_t *this, scr_plugin_t *scr) {
static void metronom_unregister_scr (metronom_t *this, scr_plugin_t *scr) {
int i;
+ int64_t time;
- /* Never unregister scr_list[0]! */
+ /* never unregister scr_list[0]! */
for (i=1; i<MAX_SCR_PROVIDERS; i++)
- if (this->scr_list[i] == scr) break;
+ if (this->scr_list[i] == scr)
+ break;
if (i >= MAX_SCR_PROVIDERS)
return; /* Not found */
-
+
this->scr_list[i] = NULL;
+ time = this->get_current_time(this);
+
+ /* master could have been adjusted, others must follow now */
+ for (i=0; i<MAX_SCR_PROVIDERS; i++)
+ if (this->scr_list[i]) this->scr_list[i]->adjust(this->scr_list[i], time);
+
this->scr_master = get_master_scr(this);
}