summaryrefslogtreecommitdiff
path: root/plugins/Clist_modern/src/modern_gettextasync.cpp
diff options
context:
space:
mode:
authorGeorge Hazan <george.hazan@gmail.com>2016-04-28 11:27:27 +0000
committerGeorge Hazan <george.hazan@gmail.com>2016-04-28 11:27:27 +0000
commit7c2e75f14ad9dd186a85b17587c21c2561286581 (patch)
treefcd4db66a9b149cb7ee480a89d3f20582bea2823 /plugins/Clist_modern/src/modern_gettextasync.cpp
parent01433b81e943d57b1ec2ebb5758bd2a85d836753 (diff)
- 2nd & 3rd lines handling unification;
- no need to copy data to make async calls; - no need to launch a thread to save a couple of msecs on a very large roster; - unused code & params cleaning git-svn-id: http://svn.miranda-ng.org/main/trunk@16785 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'plugins/Clist_modern/src/modern_gettextasync.cpp')
-rw-r--r--plugins/Clist_modern/src/modern_gettextasync.cpp172
1 files changed, 0 insertions, 172 deletions
diff --git a/plugins/Clist_modern/src/modern_gettextasync.cpp b/plugins/Clist_modern/src/modern_gettextasync.cpp
deleted file mode 100644
index 7180896a78..0000000000
--- a/plugins/Clist_modern/src/modern_gettextasync.cpp
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
-
-Miranda NG: the free IM client for Microsoft* Windows*
-
-Copyright (ñ) 2012-16 Miranda NG project (http://miranda-ng.org),
-Copyright (c) 2000-08 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.
-*/
-
-/*
-* Author Artem Shpynov aka FYR
-* Copyright 2000-2008 Artem Shpynov
-*/
-
-//////////////////////////////////////////////////////////////////////////
-// Module to async parsing of texts
-
-#include "stdafx.h"
-#include "modern_gettextasync.h"
-#include "newpluginapi.h"
-#include "modern_sync.h"
-
-int CLUI_SyncSetPDNCE(WPARAM wParam, LPARAM lParam);
-int CLUI_SyncGetShortData(WPARAM wParam, LPARAM lParam);
-
-typedef struct _GetTextAsyncItem {
- MCONTACT hContact;
- ClcData *dat;
- struct _GetTextAsyncItem *Next;
-} GTACHAINITEM;
-
-static GTACHAINITEM *gtaFirstItem = NULL;
-static GTACHAINITEM *gtaLastItem = NULL;
-static mir_cs gtaCS;
-static HANDLE hgtaWakeupEvent = NULL;
-
-static BOOL gtaGetItem(GTACHAINITEM *mpChain)
-{
- if (!mpChain)
- return FALSE;
-
- mir_cslock lck(gtaCS);
- if (!gtaFirstItem)
- return FALSE;
-
- GTACHAINITEM *ch = gtaFirstItem;
- *mpChain = *ch;
- gtaFirstItem = (GTACHAINITEM*)ch->Next;
- if (!gtaFirstItem)
- gtaLastItem = NULL;
- free(ch);
- return TRUE;
-}
-
-static void gtaThreadProc(void*)
-{
- Netlib_Logf(NULL, "GTA thread start");
-
- SHORTDATA data = { 0 };
-
- while (!MirandaExiting()) {
- Sync(CLUI_SyncGetShortData, (WPARAM)pcli->hwndContactTree, (LPARAM)&data);
- while (true) {
- if (MirandaExiting())
- goto LBL_Exit;
-
- SleepEx(0, TRUE); //1000 contacts per second
-
- GTACHAINITEM mpChain = { 0 };
- SHORTDATA dat2 = { 0 };
- if (!gtaGetItem(&mpChain))
- break;
-
- SHORTDATA *dat;
- if (mpChain.dat == NULL || (!IsBadReadPtr(mpChain.dat, sizeof(*mpChain.dat)) && mpChain.dat->hWnd == data.hWnd))
- dat = &data;
- else {
- Sync(CLUI_SyncGetShortData, (WPARAM)mpChain.dat->hWnd, (LPARAM)&dat2);
- dat = &dat2;
- }
- if (MirandaExiting())
- goto LBL_Exit;
-
- ClcCacheEntry cacheEntry;
- memset(&cacheEntry, 0, sizeof(cacheEntry));
- cacheEntry.hContact = mpChain.hContact;
- if (!Sync(CLUI_SyncGetPDNCE, (WPARAM)0, (LPARAM)&cacheEntry)) {
- Cache_GetSecondLineText(dat, &cacheEntry);
- Cache_GetThirdLineText(dat, &cacheEntry);
- Sync(CLUI_SyncSetPDNCE, (WPARAM)CCI_LINES, (LPARAM)&cacheEntry);
- CListSettings_FreeCacheItemData(&cacheEntry);
- }
-
- KillTimer(dat->hWnd, TIMERID_INVALIDATE_FULL);
- CLUI_SafeSetTimer(dat->hWnd, TIMERID_INVALIDATE_FULL, 500, NULL);
- }
-
- WaitForSingleObjectEx(hgtaWakeupEvent, INFINITE, TRUE);
- ResetEvent(hgtaWakeupEvent);
- }
-
-LBL_Exit:
- CloseHandle(hgtaWakeupEvent);
- hgtaWakeupEvent = NULL;
- g_hGetTextAsyncThread = NULL;
- Netlib_Logf(NULL, "GTA thread end");
-}
-
-BOOL gtaWakeThread()
-{
- if (hgtaWakeupEvent && g_hGetTextAsyncThread) {
- SetEvent(hgtaWakeupEvent);
- return TRUE;
- }
-
- return FALSE;
-}
-
-int gtaAddRequest(ClcData *dat, MCONTACT hContact)
-{
- if (MirandaExiting()) return 0;
-
- mir_cslock lck(gtaCS);
-
- GTACHAINITEM *mpChain = (GTACHAINITEM*)malloc(sizeof(GTACHAINITEM));
- mpChain->hContact = hContact;
- mpChain->dat = dat;
- mpChain->Next = NULL;
- if (gtaLastItem) {
- gtaLastItem->Next = (GTACHAINITEM*)mpChain;
- gtaLastItem = mpChain;
- }
- else {
- gtaFirstItem = mpChain;
- gtaLastItem = mpChain;
- SetEvent(hgtaWakeupEvent);
- }
-
- return FALSE;
-}
-
-void gtaRenewText(MCONTACT hContact)
-{
- gtaAddRequest(NULL, hContact);
-}
-
-void gtaShutdown()
-{
- if (hgtaWakeupEvent)
- SetEvent(hgtaWakeupEvent);
-}
-
-void InitCacheAsync()
-{
- hgtaWakeupEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
- g_hGetTextAsyncThread = mir_forkthread(gtaThreadProc, 0);
-}