LINUX.ORG.RU

История изменений

Исправление 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 разрешаются маской.