История изменений
Исправление Zubok, (текущая версия) :
expose в моем случае лишний..
Я не понимаю. Честно. Ты шарашишь по таймеру каждую секунду перерисовку всей панели? Дикость как она есть. Перерисовывать надо только то, что меняется. Если ничего не меняется, то и не надо перерисовывать. Если что-то должно измениться (часы), то надо перерисовать часы в тот момент, когда изменилось время.
А вот проходящие поверх окна - это случайные факторы! Когда по окну (твоей панели) проходит другое окно, то твой X-клиент от X-сервера получает сообщения о том, что твое окно надо перерисовать, так как оно портится. Вернее, он тебе сообщает регион, который надо перерисовать, а делать ли это, решает твоя программа. Если backingstore не работает, то при прохождении окна у тебя постоянно будут сыпаться эти сообщения.
Если ты перерисовываешь текст, то это не значит, что у тебя перерисовывается все окно. След от окна не перерисуется. Надо все или испорченный кусочек перезалить цветом и перерисовать участок. Или лови сообщения expose с count=0 и перерисовывай всю панель. Но это не очень эстетично.
Получение сообщений Expose разрешаются маской.
Исправление Zubok, :
expose в моем случае лишний..
Я не понимаю. Честно. Ты шарашишь по таймеру каждую секунду перерисовку всей панели? Дикость как она есть. Перерисовывать надо только то, что меняется. Если ничего не меняется, то и не надо перерисовывать. Если что-то должно измениться (часы), то надо перерисовать часы в тот момент, когда изменилось время.
А вот проходящие поверх окна - это случайные факторы! Когда по окну (твоей панели) проходит другое окно, то твой X-клиент от X-сервера получает сообщения о том, что твое окно надо перерисовать. Вернее, он тебе сообщает регион, который надо перерисовать, а делать ли это, решает твоя программа. Если backingstore не работает, то при прохождении окна у тебя постоянно будут сыпаться эти сообщения.
Если ты перерисовываешь текст, то это не значит, что у тебя перерисовывается все окно. След от окна не перерисуется. Надо все или испорченный кусочек перезалить цветом и перерисовать участок. Или лови сообщения expose с count=0 и перерисовывай всю панель. Но это не очень эстетично.
Получение сообщений Expose разрешаются маской.
Исходная версия Zubok, :
expose в моем случае лишний..
Я не понимаю. Честно. Ты просто шарашишь по таймеру кажду секунду перерисовку всей панели? Дикость как она есть. Перерисовывать надо только то, что меняется. Если ничего не меняется, то и не надо перерисовывать. Если что-то должно измениться (часы), то перерисовать часы с тот момент как изменилось время.
А вот проходящие поверх окна - это случайные факторы! Когда по окну (твоей панели) проходит другое окно, то твой X-клиент от X-сервера получается сообщения о том, что твое окно надо перерисовать. Вернее, он тебе сообщает регион, который надо перерисовать, а делать ли это, решает твоя программа. Если backingstore не работает, то при прохождении окна у тебя постоянно будут сыпаться эти сообщения.
Если ты перерисовываешь текст, то это не значит, что у тебя перерисовывается все окно. Это значит, что след от окна не перерисуется. Надо все или испорченный кусочек перезалить цветом и перерисовать участок. Или лови сообщения expose с count=0 и перерисовывай всю панель.
Получение сообщений Expose разрешаются маской.