Название: Загружено одно ядро процессора на 100% при использовании QWinHost Отправлено: korel от Декабрь 02, 2010, 13:31 Когда на qt окне(в моем случае QMainWindow) создаю HostWidget (дочерний класс QWinHost), одно ядро процессора загружается на 100%. Впедварительно в createWindow() :
Код: HWND HostWindow::createWindow(HWND i_parent, HINSTANCE i_instance)//todo check for if needless С чем это может быть связано и как это пофиксить? Название: Re: Загружено одно ядро процессора на 100% при использовании QWinHost Отправлено: korel от Декабрь 02, 2010, 13:56 То, что было замечено, что в qeventdispatcher_win.cpp:
Код: bool QEventDispatcherWin32::processEvents(QEventLoop::ProcessEventsFlags flags) цикл while выполняется милион раз за пару секунд(до 5ти секунд). Этот цикл обрабатывает сообщения системы(Windows) - он должен спать если сообщений нету. И непонятно, почему он выполняется такое количество раз???? Название: Re: Загружено одно ядро процессора на 100% при использовании QWinHost Отправлено: korel от Декабрь 02, 2010, 18:04 Вот, что прооисходило:
Когда приходит сообщение WM_PAINT ищутся его обработчики, и если их нету, то это сообщение кидается в конец очереди сообщений для того, чтобы когда нить обработаться. Таким образом получалось, что сообщения WM_PAINT шли в огромном количестве. Поскольку в MFC_шном CWnd методе OnPaint() я не написал BeginPaint-EndPaint (или как альтернативу CPaintDC paint_dc(this) ) обработчик событий не знал, что WM_PAINT есть кому обработать. собственно все! ;D |