void SelectionHandler::CopySelection() { if (m_selectionState < selstateSelecting) return; { SharedMemoryLock memLock(m_consoleCopyInfo); GetSelectionCoordinates(m_consoleCopyInfo->coordStart, m_consoleCopyInfo->coordEnd); m_consoleCopyInfo->bNoWrap = g_settingsHandler->GetBehaviorSettings().copyPasteSettings.bNoWrap; m_consoleCopyInfo->bTrimSpaces = g_settingsHandler->GetBehaviorSettings().copyPasteSettings.bTrimSpaces; m_consoleCopyInfo->copyNewlineChar= g_settingsHandler->GetBehaviorSettings().copyPasteSettings.copyNewlineChar; _snprintf_s( m_consoleCopyInfo->szFontName, sizeof(m_consoleCopyInfo->szFontName), _TRUNCATE, "%ws", g_settingsHandler->GetAppearanceSettings().fontSettings.strName.c_str()); m_consoleCopyInfo->bBold = g_settingsHandler->GetAppearanceSettings().fontSettings.bBold; m_consoleCopyInfo->bItalic = g_settingsHandler->GetAppearanceSettings().fontSettings.bItalic; m_consoleCopyInfo->dwSize = g_settingsHandler->GetAppearanceSettings().fontSettings.dwSize * 2; ::CopyMemory(m_consoleCopyInfo->consoleColors, m_tabData->consoleColors, sizeof(m_consoleCopyInfo->consoleColors)); m_consoleCopyInfo.SetReqEvent(); } ::WaitForSingleObject(m_consoleCopyInfo.GetRespEvent(), INFINITE); }
void *getDevicePtr(const Array<T>& arr) { T *ptr = arr.device(); memLock(ptr); return (void *)ptr; }
void Utils::freeBuffer(ByteBuf_t b, size_t len){ boost::lock_guard<boost::mutex> memLock(AllocatedBuffer::s_memCVMutex); AllocatedBuffer::s_allocatedMem -= len; free(b); size_t safeSize = DrillClientConfig::getBufferLimit() - MEM_CHUNK_SIZE; if (b != NULL && AllocatedBuffer::s_allocatedMem < safeSize){ AllocatedBuffer::s_isBufferLimitReached = false; //signal any waiting threads AllocatedBuffer::s_memCV.notify_one(); } }
ByteBuf_t Utils::allocateBuffer(size_t len){ boost::lock_guard<boost::mutex> memLock(AllocatedBuffer::s_memCVMutex); AllocatedBuffer::s_allocatedMem += len; //http://stackoverflow.com/questions/2688466/why-mallocmemset-is-slower-than-calloc ByteBuf_t b = (ByteBuf_t)calloc(len, sizeof(Byte_t)); size_t safeSize = DrillClientConfig::getBufferLimit() - MEM_CHUNK_SIZE; if (b != NULL && AllocatedBuffer::s_allocatedMem >= safeSize){ AllocatedBuffer::s_isBufferLimitReached = true; } return b; }
void Utils::parseConnectStr(const char* connectStr, std::string& pathToDrill, std::string& protocol, std::string& hostPortStr){ boost::lock_guard<boost::mutex> memLock(s_utilMutex); char u[MAX_CONNECT_STR + 1]; strncpy(u, connectStr, MAX_CONNECT_STR); u[MAX_CONNECT_STR] = 0; char* z = strtok(u, "="); char* c = strtok(NULL, "/"); char* p = strtok(NULL, ""); if (p != NULL) pathToDrill = std::string("/") + p; protocol = z; hostPortStr = c; return; }
void ConsoleHandler::SendMouseEvent(const COORD& mousePos, DWORD dwMouseButtonState, DWORD dwControlKeyState, DWORD dwEventFlags) { { SharedMemoryLock memLock(m_consoleMouseEvent); // TODO: implement m_consoleMouseEvent->dwMousePosition = mousePos; m_consoleMouseEvent->dwButtonState = dwMouseButtonState; m_consoleMouseEvent->dwControlKeyState = dwControlKeyState; m_consoleMouseEvent->dwEventFlags = dwEventFlags; m_consoleMouseEvent.SetReqEvent(); } ::WaitForSingleObject(m_consoleMouseEvent.GetRespEvent(), INFINITE); }