CodeMaster(27.04.2023)
Попробовал.
1) Убирает ошибку открытие следующих диалогов: Open, Save, Save As, Save Screenshot, Change ROM-disk
2) Не убирают ошибку диалоги открытия образов дискет: N1, N2
3) Также не влияет полноэкранный режим, спрятать мышку, ресайзы экрана, показ/непоказ строки статуса, тулбара, вывод "о программе".
4) Если нажать "New", то открытие этого диалога очень прилично тормозит, зато если после этого закрыть программу, то ошибка FailFast выскакиваем прям моментально, без типичной задержки.
Снял небольшой ролик - https://www.youtube.com/watch?v=El7lxgDWmYY
- - - Добавлено - - -
PS п.4 уже попробовал после того, как снял видео
PPS также пробовал выбирать эмуляцию других платформ (Орион-ПРО, Океан-240, РК) - всё тоже самое.
Критиковать - значит объяснять автору, что он делает не так, как делал бы я, если бы умел
По поводу п.4, это ожидание окончания потока, отвечающего за звук. Но я сократил этот таймаут уже лет 10 как назад (после того как перешёл на Win7). В XP всё работало как задумано, а в Win7 почему-то по другому. Разобраться не удалось, т.к. компиляцию и отладку делаю в виртуалке. Отличие поведения 1 и 2 ставит меня в тупик. Я грешил на диалог открытия файлов, но тут похоже что-то другое.
Ещё возможна проблема с GDIPLUS.DLL, т.к. именно она выгружается/деинициализируется по закрытию эмулятора. Но опять-таки, одни догадки, как проверить - непонятно. Можно, конечно, найти все версии на компе и переименовать временно, чтобы проверить. Если она не будет найдена, скриншоты только в bmp будут. Сам решай.
Последний раз редактировалось b2m; 03.05.2023 в 16:07.
EXE'шник с которым видео от 2016 года:
Нашёл ещё вариант от 2019-го:
с ним всё также, но окно ошибки всегда выскакивает моментально при закрытии эмулятора.
GDIPLUS.DLL в папке с эмулятором нету, у меня нашлись только тут:
Может версия какая-то не такая?
- - - Добавлено - - -
Ещё обратил внимание, что при закрытии процесс эмулятора исчезает мгновенно из диспетчера задач, а ошибка всплывает позже этого.
И ещё вот этапы запуска эмулятора через диспетчер задач, если это как-то может прояснить:
![]()
Последний раз редактировалось Denn; 03.05.2023 в 16:38.
Критиковать - значит объяснять автору, что он делает не так, как делал бы я, если бы умел
Вот, это версия с сокращённым таймаутом.
Для меня всегда было загадкой, почему версии настолько отличаются. Как мне кажется, грузится та, что в каталоге SysWOW64, можно попробовать переименовать её временно. Но скорее всего ошибка не пропадёт.
Это ни о чём не говорит. Мало ли что делает винда, после закрытия процесса. Может она показывает только состояние главного потока. А то, что ошибка всплывает позже может намекать на то, что поток, отвечающий за звук, продолжал работать и после закрытия эмулятора.
Винда вот эта: "Windows 10 Pro 22H2 19045.2364 + Office 2021 x64 by BoJlIIIebnik RU.iso"
Но всё же я думаю, что конкретная сборка винды тут ни при чём.
- - - Добавлено - - -
Такое разве возможно?! Родительский процесс разве не контролирует закрытие своих потоков?
Ну ок, если это гадит процесс звука, то что даёт открытие/закрытие некоторых файловых диалогов?
- - - Добавлено - - -
Мне всё таки странны тормоза между выбором платформы и её запуском. Их точно раньше не было. Такое ощущение, что происходит разводка печатной платы моделируемой 8-битки)) При этом загрузки процессора нет вообще.
Последний раз редактировалось Denn; 03.05.2023 в 16:59.
Критиковать - значит объяснять автору, что он делает не так, как делал бы я, если бы умел
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Правильно написанная программа сама завершает потоки. При закрытии программы я тоже жду, когда завершится поток, но он похоже не завершается. Отсюда и таймаут.
Хороший вопрос. Ответа только пока нет.
При выборе платформы предыдущая закрывается, соответственно и поток, отвечающий за звук.
Если при старте не выбирать платформу, а нажать Esc, то выбор платформы по New будет без тормозов.
- - - Добавлено - - -
Вопрос только в том, почему ошибка только у тебя.
- - - Добавлено - - -
Я не настаиваю на использовании последней версии, но пользоваться совсем уж древней версией всё-же как-то странно.
Проверил - действительно. И если не выбирать никакую платформу, то при выходе ошибки нет.
- - - Добавлено - - -
Возможно каким-то образом через настройки запретить запуск процесса звука вообще?
- - - Добавлено - - -
Это не вопрос. Сколько реально пользующихся эмулятором сегодня? Сколько среди них живут под Вин10 ? Сколько из них зарегистрированы на форуме? Сколько готовы заморачиваться обратной связью с автором эмулятора, если что-то не совсем ровно работает? Не удивлюсь, если я один и есть такой
- - - Добавлено - - -
P.S. через две недели выйду из отпуска и проверю на работе, там тоже 10-ка.
Критиковать - значит объяснять автору, что он делает не так, как делал бы я, если бы умел
К сожалению, не предусмотрено.
- - - Добавлено - - -
Есть предположение, что процесс звука как-то не так завершается и остаётся зомби-процессом. А винда при закрытии процесса это обнаруживает, и выдаёт ошибку.
Проверить можно так: в версии от 2016 года запустить платформу, открыть и закрыть диалог, убирающий ошибку, затем открыть диалог новой платформы, но потом нажать Esc.
То есть скомбинировать п.1 и п.4
Проконтролировать задержку при открытии новой платформы, при закрытии эмулятора и наличие ошибки.
Полагаю, при закрытии эмулятора задержки не будет, но ошибка будет.
- - - Добавлено - - -
Если есть желание копаться дальше, могу сделать настройку в файле EMU.ini, отключающую создание процесса звука.
Поэкспериментировал по-всякому. В общем, факт открытия любой платформы взводит ошибку выхода, а передёргивание диалога ROM-диска (или Save и т.п.) деактивирует её навсегда. Между ними можно делать сколько угодно New-Cancel операций, на картину выхода не влияет. Подробнее:
1) Запускаем, но жмём отмену (не грузим платформу). New срабатывает моментально. Так можно сколько угодно делать. Выход из эмуля - без ошибки.
2) Запускаем эмуль, выбираем платформу. Жмём New - всё виснет насмерть на время лага, появляется новая платформа. Можно вновь сделать New, также лаг. Если делать отмену новой платформы и вновь жать New, то лага нет. Выход с ошибкой через время лага.
3) Запускаем, но жмём отмену (не грузим платформу). New срабатывает моментально. Далее выполняем п.2 (только без запуска эмуля, он у нас уже запущен) - всё также как в п.2
4) Самое интересное! Запускаем, но жмём отмену (не грузим платформу). New срабатывает моментально. Передёргиваем диалог "Save". Жмём New, выбираем платформу, затем закрываем эмуль - ошибки нет!
- - - Добавлено - - -
5) Всё как в п.4, но не выходим из эмуля, а жмём New - лаг. Но последующие выборы платформ или отмены картину не меняют - выход из эмуля без ошибки.
- - - Добавлено - - -
Да. Надо же добить вопрос
- - - Добавлено - - -
Поправка к п.2
Лаг между выходом и появлением ошибки есть только в случае, если выходим с загруженной платформой. Если после передёргивания New-Cancel, то ошибка после закрытия моментально без лага.
- - - Добавлено - - -
Таким образом, насколько я понимаю ситуацию, лаг есть всегда по факту загрузки/выгрузки платформы, но напрямую он на ошибку не влияет. Передёргивание причинных диалогов квитирует ошибку навсегда, но на лаги не влияет. Ошибку взводит факт загрузки платформы, а не эмулятора. Деактивировать ошибку (или не допустить её взвод?) можно заранее - это самое странное во всей этой истории, на мой взгляд.
Последний раз редактировалось Denn; 03.05.2023 в 19:55.
Критиковать - значит объяснять автору, что он делает не так, как делал бы я, если бы умел
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)