X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=lib%2Fsilcutil%2Fwin32%2Fsilcwin32schedule.c;h=0a0505228121172d4ecffd86fe58c0b7d5b91cfd;hb=e7b6c157b80152bf9fb9266e6bdd93f9fb0db776;hp=4c31c0d980b804d518e520da9bc31710413642d2;hpb=b3a78038ce4bf3a84ef5feb051937ea62ba6087f;p=silc.git diff --git a/lib/silcutil/win32/silcwin32schedule.c b/lib/silcutil/win32/silcwin32schedule.c index 4c31c0d9..0a050522 100644 --- a/lib/silcutil/win32/silcwin32schedule.c +++ b/lib/silcutil/win32/silcwin32schedule.c @@ -40,7 +40,6 @@ typedef struct { int silc_select(SilcSchedule schedule, void *context) { SilcWin32Scheduler internal = (SilcWin32Scheduler)context; - SilcHashTableList htl; HANDLE handles[MAXIMUM_WAIT_OBJECTS]; DWORD ready, curtime; LONG timeo = INFINITE; @@ -54,7 +53,7 @@ int silc_select(SilcSchedule schedule, void *context) } /* Add wakeup semaphore to events */ - handles[nhandles++] = (HANDLE)internal->wakeup_sema; + handles[nhandles++] = internal->wakeup_sema; /* Get timeout */ if (schedule->has_timeout) @@ -126,12 +125,12 @@ int silc_select(SilcSchedule schedule, void *context) /* Window callback. We get here when some event occurs on file descriptor or socket that has been scheduled. We add them to dispatch queue and - notify the scheduler handle them. */ + notify the scheduler to handle them. */ static LRESULT CALLBACK silc_schedule_wnd_proc(HWND hwnd, UINT wMsg, WPARAM wParam, LPARAM lParam) { - SilcSchedule schedule = (SilcSchedule)GetWindowLong(hwnd, GWL_USERDATA); + SilcSchedule schedule = (SilcSchedule)GetWindowLongPtr(hwnd, GWL_USERDATA); SilcWin32Scheduler internal; SilcUInt32 fd; SilcTaskFd task; @@ -157,11 +156,12 @@ silc_schedule_wnd_proc(HWND hwnd, UINT wMsg, WPARAM wParam, LPARAM lParam) break; } - /* Ignore the event if the task not valid anymore */ + /* Ignore the event if the task is not valid anymore */ if (!task->header.valid || !task->events) { SILC_SCHEDULE_UNLOCK(schedule); break; } + task->revents = 0; /* Handle event */ switch (WSAGETSELECTEVENT(lParam)) { @@ -268,7 +268,7 @@ void *silc_schedule_internal_init(SilcSchedule schedule, void *app_context) } /* Set the scheduler as the window's context */ - SetWindowLong(internal->window, GWL_USERDATA, (void *)schedule); + SetWindowLongPtr(internal->window, GWL_USERDATA, (void *)schedule); SetWindowPos(internal->window, HWND_BOTTOM, 0, 0, 0, 0, SWP_FRAMECHANGED); internal->wakeup_sema = CreateSemaphore(NULL, 0, 100, NULL); @@ -324,6 +324,7 @@ SilcBool silc_schedule_internal_schedule_fd(SilcSchedule schedule, /* Schedule for events. The silc_schedule_wnd_proc will be called to deliver the events for this fd. */ WSAAsyncSelect(task->fd, internal->window, SILC_WM_EVENT, events); + task->revents = 0; return TRUE; }