Найти в Дзене
Creative IT

Самая любимая ошибка Windows, и почему она возникала

Как сейчас помню — середина двухтысячных, родители подарили новенький компьютер. Тогда ещё не были распространены эти ваши интернеты, рисовали в paint, играли в косынку и устанавливали игры с дисков, причём, каждая вторая без диска не запускалась:) Развлекались, как могли. Но сейчас не об этом.

На тот момент в самом разгаре была актуальная на то время операционная система Windows XP. Естественно, лучшие ностальгические воспоминания возникают именно с ytq, так как начинал знакомство с компьютером именно с XP. И как вы думаете, какой баг системы запомнился больше всего? Синий экран смерти? Неет)Это был баг, который не только открывал новые возможности винды, он делал из тебя настоящего художника (причём хотел ты этого, или нет). Речь идет о том самом "рисующем" окне.

Для тех, кто не застал этого замечательного времени, или вы хотите снова испытать те прекрасные чувства непризнанного творца, для вас ссылка (Внимание! На мобилках работает крайне нестабильно! Запускайте на десктопах): https://mrdoob.com/lab/javascript/effects/ie6/
Программа сделана на MrDoob. MrDoob — специальная песочница для создания графических штук посредством JavaScript

Почему появлялся этот баг?

Ну сейчас я раскрою секреты, и постараюсь объяснить всё простым языком. В общем, если у какого-то окна по какой-то причине зависает поток, отвечающий за перерисовку интерфейса окна (главный поток), то окно просто-напросто перестает перерисовывать себя и если по нему поводить другим окном, то следы этого окна остаются на поверхности нижнего зависшего окна.

Чтобы было более понятно, вот вам иллюстрация:

-2

1. Чтобы интерфейс отображался корректно, его нужно обрабатывать
2. При обработке тяжёлого кода (например, работа с сокетами), сообщение окну "что нужно перерисовать" просто висит в очереди.
3. Буфер окна заполняется мусором (верхнего окна) без перерисовки

К слову, такой баг можно воспроизвести на любой системе, если предварительно отключить промежуточную буферизацию. Вначале своего развития за Windows 10 наблюдался такой грешок.