MPC-BE forum

MPC-BE => Баг Репорт / The bug report => Тема начата: Evgeniy1990 от 25 января 2016, 20:13:23

Название: OSD - "Крыша снос"
Отправлено: Evgeniy1990 от 25 января 2016, 20:13:23
При взаимодействии с опцией "Приостанавливать воспроизведение видео при сворачивании окна", 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
Название: OSD - "Крыша снос"
Отправлено: V0lt от 25 января 2016, 21:27:50
Что-то похожее было, только для ручного сворачивания.
Алгоритм воспроизведения бага какой-то совсем надуманный.
Название: OSD - "Крыша снос"
Отправлено: Evgeniy1990 от 25 января 2016, 21:33:10
Цитата: V0ltЧто-то похожее было, только для ручного сворачивания.
Алгоритм воспроизведения бага какой-то совсем надуманный.
Да, уже было такое раньше, в обычной ситуации, т.е. когда просто сворачивали плеер и OSD отсоедиинялось от окна плеера, при обратном разворачивании. теперь ситуация (случай) аналогичная.

Что значит - надуманный?

Это стабильный алгоритм воспроизведения данного бага.
Именно по такому алгоритму воспроизводится этот баг.
Название: OSD - "Крыша снос"
Отправлено: Aleksoid1978 от 26 января 2016, 01:23:13
Повторить не могу.

P.S. Причем я специально в коде сделал "поведение" OSD одинаковое на всех системах, т.е. как на WinXP(сейчас для Win8 и выше работа с OSD отличается). И все равно не могу воспроизвести.
Название: OSD - "Крыша снос"
Отправлено: Evgeniy1990 от 26 января 2016, 15:21:40
Цитата: Aleksoid1978Повторить не могу.

P.S. Причем я специально в коде сделал "поведение" OSD одинаковое на всех системах, т.е. как на WinXP(сейчас для Win8 и выше работа с OSD отличается). И все равно не могу воспроизвести.

Почему все остальные пользователи могут ее воспроизвести? А вы, как всегда - не можете.

Вот скажу вам честно, большинство поломок, которые у нас присутствуют в проекте, появились только лишь потому, что вы у себя их - не увидеть, ни воспроизвести не можете.

И, кстати, я вам напомню, что она также есть и на выпендрежной Windows 7, а не только на нормальной Windows XP.
Ошибка полностью стабильная, воспроизводится нетрудно, согласно данному алгоритму воспроизведения.
[merge_posts_bbcode]Добавлено: 2016-01-26 15:21:40[/merge_posts_bbcode]

Обновил баг-репорт, добавил ссылку на видеозапись для наглядности самого бага.
Название: OSD - "Крыша снос"
Отправлено: V0lt от 28 января 2016, 18:17:37
Для оконного режима окно OSD для разных систем разное. Для 8 и 10 - дочернее, а для XP и 7-ки - pop-up. Отсюда и разница на разных системах. Почему так сделано, непонятно.
Название: OSD - "Крыша снос"
Отправлено: Aleksoid1978 от 29 января 2016, 05:03:37
Только с 8 поддерживается дочернее - поэтому на 8 и выше бага с "отрывом" OSD от основного окна в принципе не может быть :)
[merge_posts_bbcode]Добавлено: 2016-01-29 12:03:37[/merge_posts_bbcode]

По поводу появления OSD раньше основного окна - подтверждаю, смог таки воспроизвести. Проблема из-за того что при разворачивании даже пока само окно еще не развернулось - все функции для получения его размера и координат сообщают именно положение и размер такой, какой будет после разворачивания. Как такое побороть - не имею понятия :)
Название: OSD - "Крыша снос"
Отправлено: V0lt от 29 января 2016, 06:19:29
Цитата: Aleksoid1978Только с 8 поддерживается дочернее
Ага, щас.
ЦитироватьWindow Styles
...
WS_CHILD
...
Minimum supported client :   Windows 2000 Professional [desktop apps only]
Название: OSD - "Крыша снос"
Отправлено: Aleksoid1978 от 29 января 2016, 06:39:14
Ты смотри связку с другими флагами. Я не помню с каким точно,  может на прозрачность.
Название: OSD - "Крыша снос"
Отправлено: V0lt от 29 января 2016, 17:25:47
Aleksoid1978
В общем прозрачность для дочерних окон нормально работает только начиная с 8-ки. До этого все через костыли пытались реализовывать.
https://habrahabr.ru/post/247397/
http://rsdn.ru/forum/winapi/4228837.all
Название: OSD - "Крыша снос"
Отправлено: Aleksoid1978 от 30 января 2016, 04:00:18
Ну как я и говорил. А т.к. окно не дочернее а Popup - вот и проблемы с ним :)