/* Miranda IM: the free IM client for Microsoft* Windows* Copyright 2000-2009 Miranda ICQ/IM project, all portions of this codebase are copyrighted to the people listed in contributors.txt. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "..\..\core\commonheaders.h" static WINDOWLISTENTRY *windowList = NULL; static int windowListCount = 0; static int nextWindowListId = 1; static INT_PTR AllocWindowList(WPARAM, LPARAM) { return nextWindowListId++; } static INT_PTR AddToWindowList(WPARAM, LPARAM lParam) { windowList = (WINDOWLISTENTRY*)mir_realloc(windowList, sizeof(WINDOWLISTENTRY)*(windowListCount+1)); windowList[windowListCount++] = *(WINDOWLISTENTRY*)lParam; return 0; } static INT_PTR RemoveFromWindowList(WPARAM wParam, LPARAM lParam) { int i; for (i=0;imessage, msg->wParam, msg->lParam); return 0; } static INT_PTR BroadcastToWindowListAsync(WPARAM wParam, LPARAM lParam) { int i; MSG *msg = (MSG*)lParam; for (i=0;imessage, msg->wParam, msg->lParam); return 0; } int InitWindowList(void) { CreateServiceFunction(MS_UTILS_ALLOCWINDOWLIST, AllocWindowList); CreateServiceFunction(MS_UTILS_ADDTOWINDOWLIST, AddToWindowList); CreateServiceFunction(MS_UTILS_REMOVEFROMWINDOWLIST, RemoveFromWindowList); CreateServiceFunction(MS_UTILS_BROADCASTTOWINDOWLIST, BroadcastToWindowList); CreateServiceFunction(MS_UTILS_BROADCASTTOWINDOWLIST_ASYNC, BroadcastToWindowListAsync); CreateServiceFunction(MS_UTILS_FINDWINDOWINLIST, FindInWindowList); return 0; } void FreeWindowList(void) { if (windowList) { mir_free(windowList); windowList = NULL; } windowListCount = 0; nextWindowListId = 1; }