У меня есть приложение, которое получает изображения с камеры.Приложение написано с использованием wxWidgets, и я пытаюсь отобразить изображение, создав событие рисования.Каждый раз, когда я получаю новое изображение, я вызываю «Обновить» на панели.
Примерно через полминуты-минуты он перестает реагировать на события рисования.Я смотрю на wxWidgets Wiki, но не могу понять, почему он это делает (я полагаю, что разрешаю запускать цикл событий GUI).
Когда я изменяю размер окна,оно обновляет изображение как обычно (поэтому оно не блокирует все события рисования).
Есть идеи, почему это происходит?
Я не уверен, насколько это поможет, но вот краскакод события.
void ImageViewer::onPaint(wxPaintEvent &event)
{
wxBufferedPaintDC dc(this);
cv::Mat buffer;
static int count = 0;
std::cout << "drawing " << ++count << std::endl;
{
// doing stuff in a lock
}
// it doesn't ever seem to get stuck in the lock
std::cout << "finished" << std::endl;
// buffer is an object with the image data buffered
wxImage img(buffer.rows,
buffer.cols,
buffer.data, true);
wxBitmap bmp(img);
dc.DrawBitmap(bmp, 0, 0);
}
Я вызываю refresh каждый раз, когда получаю новое изображение и меняю буфер (смена буфера выполняется внутри замка).