вторник, 3 февраля 2009 г.

в час ночи кодер в офисе ждет такси...

а спасибо за это нужно скать разработчикам Samsung i907 (Epix), точнее тем, кто сделал звуковой драйвер. Что про них думают юзеры можно прочитать:
Wireless Forums from AT&T : Phone & Device Support : Samsung : [Epix] New mail notification doesn't work in standby

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

Предыдущие разы наш сапорт на американской стороне отмазался так - "ставьте фикс самсунга". Теперь вылезло что это фикс не очень прямо работает, аутлук на новое мыло может бикние, а вот остальной софт все еще имеет проблемы.
У нас они вылезли в простом и рабочем практически всюду и давно коде:

SetPowerRequirement((PVOID)TEXT("WAV1:"), D1, POWER_NAME | POWER_FORCE, NULL, 0);
PlaySound(.....)

первая строчка - хочу проиграть звук, девайс включи саундбластер,
вторая играет вавку.
Вот только если на всех остальных поддерживаемых девайсах это работает,то на Epix нет. А проверка с помощью GetDevicePower сразу после SetPowerRequirement утверждает что девайс включеный.

Помогает универсальный программистский паттерн Sleep(1000), вот только его успели забакланить еще до того,как баг попал ко мне :), завтра буду объяснять, что по другому не получиться :)

2 комментария:

exBit комментирует...

Помогает универсальный программистский паттерн Sleep(1000).
нема нічого гіршого оперувати такими патернами ... а в дійсності АНТИПАТЕРНАМИ.

cencio комментирует...

не каждый вызов слипа становится антипатерном автоматом. Слип-антипатерн, это когда он используеться для "синхронизации" в мультипоточной среде.

основное проблема(в реальном коде немного сложней, там есть дополнительные проверки которые убирают тормоза видимые юзеру) в Sleep(1000) - константа 1000 (500 не хватает), но потом может оказаться что и ее не хватает :)