*tim = t;
DBG("tdm send time @%1.5f ... send %1.8f\n", ecore_time_get(), t);
eina_spinlock_take(&tick_queue_lock);
- tick_queue_count++;
+ if (tick_queue_count == 0)
+ {
+ tick_queue_count++;
+ ecore_thread_feedback(tdm_thread, tim);
+ } else {
+ free(tim);
+ }
eina_spinlock_release(&tick_queue_lock);
- ecore_thread_feedback(tdm_thread, tim);
}
traceTaskEnd();
}
eina_spinlock_take(&tick_queue_lock);
tick_queued = tick_queue_count;
- tick_queue_count--;
eina_spinlock_release(&tick_queue_lock);
DBG("notify.... %3.3f %i", *((double *)msg), tdm_event_is_busy);
DBG("skip this vsync for schedule queued %d\n", tick_queued);
}
}
+
+ eina_spinlock_take(&tick_queue_lock);
+ tick_queue_count--;
+ if (tick_queue_count < 0) tick_queue_count = 0;
+ eina_spinlock_release(&tick_queue_lock);
+
free(msg);
traceTaskEnd();
}