это ж уже внутренности нативного фреймворка, класса NSWindow. или интересует именно ассемблерный код?
Ну плутать в дебрях ОС (в ассемблере) в мои планы не входит
Но может он где-то зовет что-то типа callback.
Собственно QGLWdget здесь ни при чем, он просто отрисовывается значительно медленнее и проблема становится видна невооруженным глазом. Вот тестовый пример
C++ (Qt)
#include <QtWidgets>
class MyWidget : public QWidget {
public:
void mousePressEvent( QMouseEvent * )
{
int w = width();
int h = height();
w += (w < 800) ? 100 : -100;
h += (h < 800) ? 100 : -100;
resize(w, h);
QThread::msleep(2 * 1000);
}
};
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MyWidget * win = new MyWidget;
QVBoxLayout * layout = new QVBoxLayout(win);
win->setLayout(layout);
win->setWindowTitle("Click me");
win->resize(300, 200);
layout->addWidget(new QLabel("Some Text", win));
win->show();
return app.exec();
}
Первая картинка - начальное окно. Вторая - после вызова resize, Третья - после перерисовки. Т.е. сначала окно масштабится как bitmap и рисуется (c QGLWidget это не катит, поэтому мусор) - и только потом цивильная перерисовка через paintEvent. Как избавиться от этого навязчивого сервиса? (на Вындоуз его нет)