MCPcopy Create free account
hub / github.com/acl-dev/acl / event_timer_callback

Function event_timer_callback

lib_acl/src/event/events_wmsg.c:751–811  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

749}
750
751static VOID CALLBACK event_timer_callback(HWND hwnd, UINT uMsg,
752 UINT_PTR idEvent, DWORD dwTime)
753{
754 const char *myname = "event_timer_callback";
755 EVENT_WMSG *ev = get_hwnd_event(hwnd);
756 ACL_EVENT *eventp;
757 EVENT_TIMER *timer;
758 ACL_EVENT_NOTIFY_TIME timer_fn;
759 void *timer_arg;
760
761 if (ev == NULL) {
762 acl_msg_fatal("%s(%d): ev null", myname, __LINE__);
763 }
764 if (ev->tid != idEvent) {
765 acl_msg_fatal("%s(%d): ev->tid(%u) != idEvent(%u)",
766 myname, __LINE__, (unsigned int) ev->tid,
767 (unsigned int) idEvent);
768 }
769
770 eventp = &ev->event;
771 SET_TIME(eventp->present);
772
773 while ((timer = FIRST_TIMER(&eventp->timer_head)) != 0) {
774 if (timer->when > eventp->present)
775 break;
776 timer_fn = timer->callback;
777 timer_arg = timer->context;
778
779 /* �����ʱ����ʱ���� > 0 ��������ʱ����ѭ�����ã��������趨ʱ�� */
780 if (timer->delay > 0 && timer->keep) {
781 timer->ncount++;
782 eventp->timer_request(eventp, timer->callback,
783 timer->context, timer->delay, timer->keep);
784 } else {
785 acl_ring_detach(&timer->ring); /* first this */
786 timer->nrefer--;
787 if (timer->nrefer != 0) {
788 acl_msg_fatal("%s(%d): nrefer(%d) != 0",
789 myname, __LINE__, timer->nrefer);
790 }
791 acl_myfree(timer);
792 }
793 timer_fn(ACL_EVENT_TIME, eventp, timer_arg);
794 }
795
796 if ((timer = FIRST_TIMER(&eventp->timer_head)) == 0) {
797 KillTimer(hwnd, idEvent);
798 ev->timer_active = 0;
799 } else {
800 int delay;
801
802 SET_TIME(eventp->present);
803 delay = (int) (timer->when - eventp->present + 999) / 1000;
804
805 /* Ҫ��ʱ�䶨ʱ���ļ�������� 1 ���� */
806 if (delay < 1000) {
807 delay = 1000;
808 }

Callers

nothing calls this directly

Calls 4

acl_msg_fatalFunction · 0.85
acl_ring_detachFunction · 0.85
timer_fnFunction · 0.85
get_hwnd_eventFunction · 0.70

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…