При взаимодействии с опцией "Приостанавливать воспроизведение видео при сворачивании окна", OSD начинает вести себя очень нестабильно.
! Данный баг наблюдается только на системах Windows 7 и Windows XP.
Симптомы:
1. Проявление, когда вздумается.
2. Прилипание навечно, пока не закрою видео файл, или сам плеер.
3. Разделение от основного окна самого плеера.
4. Команды в зависимости, или наоборот - независимости от определенных действий.
Алгоритм воспроизведения бага - поломки:
1. Включить OSD
2. Включить опцию "Приостанавливать воспроизведение видео, при сворачивании окна"
3. Открыть видео файл
4. Изменить "Громкость" и сразу же свернуть плеер на панель задач
5. В эту же секунду, развернуть его обратно
Фактический результат: на Windows 7 OSD появляется раньше, чем основное окно самого плеера.
Ожидаемый результат: на Windows 7 OSD должно появляться только после того, когда развернется окно самого плеера.
6. Зайти в настройки, выключить опцию " Показать OSD"
7. Свернуть плеер и развернуть его обратно сразу же
Фактический результат:
1. OSD появится само по себе, несмотря на тот факт, что я его выключил вообще.
2. При этом, если сдвинуть окно плеера в любую сторону, оно оторвется от окна самого плеера.
3. Причем, вдобавок еще и не исчезнет до тех пор, пока я не закрою сам воспроизводимый файл, или сам плеер.
4. В самом OSD будет показан уровень громкости, или просто надпись "Воспроизведение", в зависимости от того, какое действие мы выполнили, сразу после того, как выключили опцию "Показать OSD", свернули плеер, а затем развернули его обратно.
Ожидаемый результат:
Если мы выключили опцию "Показать OSD", свернули плеер, а потом опять его развернули обратно, то OSD в любом случае вообще быть не должно, поскольку мы его уже итак выключили, прежде чем свернули плеер и развернули его обратно.
P.S. Ссылка на видеозапись: https://yadi.sk/i/gwS1vmVUnkfDB
Что-то похожее было, только для ручного сворачивания.
Алгоритм воспроизведения бага какой-то совсем надуманный.
Цитата: V0ltЧто-то похожее было, только для ручного сворачивания.
Алгоритм воспроизведения бага какой-то совсем надуманный.
Да, уже было такое раньше, в обычной ситуации, т.е. когда просто сворачивали плеер и OSD отсоедиинялось от окна плеера, при обратном разворачивании. теперь ситуация (случай) аналогичная.
Что значит - надуманный?
Это стабильный алгоритм воспроизведения данного бага.
Именно по такому алгоритму воспроизводится этот баг.
Повторить не могу.
P.S. Причем я специально в коде сделал "поведение" OSD одинаковое на всех системах, т.е. как на WinXP(сейчас для Win8 и выше работа с OSD отличается). И все равно не могу воспроизвести.
Цитата: Aleksoid1978Повторить не могу.
P.S. Причем я специально в коде сделал "поведение" OSD одинаковое на всех системах, т.е. как на WinXP(сейчас для Win8 и выше работа с OSD отличается). И все равно не могу воспроизвести.
Почему все остальные пользователи могут ее воспроизвести? А вы, как всегда - не можете.
Вот скажу вам честно, большинство поломок, которые у нас присутствуют в проекте, появились только лишь потому, что вы у себя их - не увидеть, ни воспроизвести не можете.
И, кстати, я вам напомню, что она также есть и на выпендрежной Windows 7, а не только на нормальной Windows XP.
Ошибка полностью стабильная, воспроизводится нетрудно, согласно данному алгоритму воспроизведения.
[merge_posts_bbcode]Добавлено: 2016-01-26 15:21:40[/merge_posts_bbcode]
Обновил баг-репорт, добавил ссылку на видеозапись для наглядности самого бага.
Для оконного режима окно OSD для разных систем разное. Для 8 и 10 - дочернее, а для XP и 7-ки - pop-up. Отсюда и разница на разных системах. Почему так сделано, непонятно.
Только с 8 поддерживается дочернее - поэтому на 8 и выше бага с "отрывом" OSD от основного окна в принципе не может быть :)
[merge_posts_bbcode]Добавлено: 2016-01-29 12:03:37[/merge_posts_bbcode]
По поводу появления OSD раньше основного окна - подтверждаю, смог таки воспроизвести. Проблема из-за того что при разворачивании даже пока само окно еще не развернулось - все функции для получения его размера и координат сообщают именно положение и размер такой, какой будет после разворачивания. Как такое побороть - не имею понятия :)
Цитата: Aleksoid1978Только с 8 поддерживается дочернее
Ага, щас.
ЦитироватьWindow Styles
...
WS_CHILD
...
Minimum supported client : Windows 2000 Professional [desktop apps only]
Ты смотри связку с другими флагами. Я не помню с каким точно, может на прозрачность.
Aleksoid1978
В общем прозрачность для дочерних окон нормально работает только начиная с 8-ки. До этого все через костыли пытались реализовывать.
https://habrahabr.ru/post/247397/
http://rsdn.ru/forum/winapi/4228837.all
Ну как я и говорил. А т.к. окно не дочернее а Popup - вот и проблемы с ним :)