Bug 1094

Summary: Сигнал динамика системного блока
Product: WINE@Etersoft Reporter: Сережин Дмитрий <sdvinfo>
Component: Оборудование ; ДрайвераAssignee: Vitaly Lipatov <lav>
Status: CLOSED FIXED QA Contact:
Severity: minor    
Priority: P5 CC: amorozov, baraka, kondratyuk, lav, saa
Version: 1.0.9   
Target Milestone: ---   
Hardware: PC   
OS: Linux   
URL: http://msdn.microsoft.com/en-us/library/ms645505.aspx
Whiteboard:
Заявки RT: Связано с:
Дата напоминания:
Bug Depends on: 610    
Bug Blocks: 384, 1217    
Attachments: Тестовая программа с MessageBeep теперь воспроизводит звук через спикер
Тестовая программа
Тестовая программа для Linux, воспроизводящая звук через спикер

Description Сережин Дмитрий 2008-01-24 11:10:44 MSK
В приложении Access, вывод системных сообщений, а так же вывод сообщений посредством метода docmd.MsgBox должен сопровождаться сигналом динамика системного блока. В настоящее время этого не происходит.
Comment 1 Vitaly Lipatov 2008-01-25 23:11:25 MSK
Вроде простая отдельная задача.
Comment 2 Семенов Александр Алексеевич 2008-04-11 13:56:59 MSD
Скажите, а какие планы по этой задаче?
Comment 3 Анатолий Лютин 2008-04-11 14:17:57 MSD
(In reply to comment #2)
> Скажите, а какие планы по этой задаче?
> 
В течение месяца ошибка будет рассмотрена и, по возможности, исправлена.

Comment 4 Vitaly Lipatov 2008-04-14 13:18:08 MSD
Есть сложности с тем, что вывод звука это по сути привилегированная операция, и так просто сделать это не получится.
 * Консольная функция Beep просто выводит \a в stdout
 * MessageBeep, если звук не выключен системным параметром SPI_GETBEEP, вызывает USER_Driver->pBeep() - причём не передавая параметр высоты звука.
Эта Beep реализована в keyboard.c как
XBell(thread_display(), 0);

Таким образом всё сводится к тому, какие средства в X Window мы имеем для воспроизведения системного звука.
Потому что иначе придётся делать через etersafe (потому как он имеет достаточные привилегии для работы с PC Speaker), а это не будет работать для терминальных серверов.
Comment 5 Семенов Александр Алексеевич 2008-05-22 10:06:02 MSD
Существуют ли какие-нибудь изменения планов по данной задаче?
Comment 6 Vitaly Lipatov 2008-05-22 11:56:49 MSD
Предлагаю исследовать, какие возможности нам даёт Иксовый XBell
(man XBell), работает ли это вообще.
И хорошо бы вообще багу воспроизвести, потому что всё же реализовано уже.
Вторым этапом надо добавить возможность указание высоты и длительности звука.
Для этого X11DRV_Beep и прочие должны принимать все необходимые параметры.
Comment 7 Александр Морозов 2008-05-23 16:47:57 MSD
Created attachment 458 [details]
Тестовая программа с MessageBeep теперь воспроизводит звук через спикер
Comment 8 Vitaly Lipatov 2008-05-23 18:36:27 MSD
Будет в сборке 1.0.9-alt6
Comment 9 Семенов Александр Алексеевич 2008-08-05 11:26:13 MSD
Вчера (04.08.2008) загрузил и поставил сборку 1.0.9 на Ubuntu 7.10. Создал ситуацию вывода системного сообщения от Access (Office XP). Сигнала системного динамика не было.
На загрузке была выложена еще пока версия не alt6, или я просто не смог что-то правильно настроить?
Comment 10 Vitaly Lipatov 2008-08-05 11:51:45 MSD
to amorozov@:
приложи пожалуйста сюда тестовую программу в исходнике и в виде EXE-файла.
Comment 11 Александр Морозов 2008-08-05 12:03:27 MSD
Created attachment 640 [details]
Тестовая программа
Comment 12 Семенов Александр Алексеевич 2008-08-05 12:34:45 MSD
Скачал. Запустил файл exe из под Wine. Тишина.
Comment 13 Александр Морозов 2008-08-05 13:13:37 MSD
А если перед запуском сделать xset b?
Comment 14 Семенов Александр Алексеевич 2008-08-05 14:37:39 MSD
Сделал. Звук включен. Результат:
fixme:msnet:MSNET32_57 (0x0000 0x000a (nil) 0x0000 0x33f7f6): stub
fixme:msnet:MSNET32_57 (0x0000 0x000a 0x33f794 0xfc940000 0x33f7f6): stub
err:service:RPC_Init RpcServerListen failed with error 1714
err:wineboot:start_services_process Unexpected termination of services.exe - exit code 1714

Кстати, не подумал сразу на всякий пожарный уточнить. У меня версия SQL. На случай если вдруг тут могут быть какие-то различия ...
Comment 15 Александр Морозов 2008-08-07 11:15:42 MSD
Это пишется в консоли при запуске, а сигнала системного динамика по прежнему нету?
Comment 16 Семенов Александр Алексеевич 2008-08-07 11:23:22 MSD
Имеется в виду, что "xset b" в консоли выполнил.
Затем с консоли запустил экзешник тестовой программы. Результат, отображенный в консоли был следующим:
fixme:msnet:MSNET32_57 (0x0000 0x000a (nil) 0x0000 0x33f7f6): stub
fixme:msnet:MSNET32_57 (0x0000 0x000a 0x33f794 0xfc940000 0x33f7f6): stub
err:service:RPC_Init RpcServerListen failed with error 1714
err:wineboot:start_services_process Unexpected termination of services.exe -
exit code 1714
Comment 17 Александр Морозов 2008-08-07 15:00:39 MSD
Created attachment 644 [details]
Тестовая программа для Linux, воспроизводящая звук через спикер

А эта программа какой-нибудь звук издаёт?
Comment 18 Семенов Александр Алексеевич 2008-08-18 11:54:47 MSD
Как выяснилось последняя тестовая программа тоже не издавала никакого звука. По той простой причине, что в блоке напрочь отсутствовал системный динамик. Динамик поставил. Звук появился. На виндовой тестовой программе появился тоже. При системных сообщениях от Access звука нет. Установлена версия 1.0.9.
Comment 19 Александр Морозов 2008-08-21 12:26:05 MSD
А какая версия Access?
Comment 20 Семенов Александр Алексеевич 2008-08-21 12:40:01 MSD
Office 2000
Comment 21 Александр Морозов 2008-09-01 13:09:18 MSD
Вот такой макрос работает в Excel 2000 в 1.0.9:

Public Declare Function MessageBeep Lib "user32" _
    (ByVal wType As Long) As Long

Sub Макрос1()
    MessageBeep (&HFFFFFFFF)
End Sub

В Access проверить пока не получилось, так как при открытии или создании базы выдаётся сообщение об ошибке при установлении связи с сервером OLE или элементом управления ActiveX.
Comment 22 Александр Морозов 2008-09-02 20:03:42 MSD
Попробовал воспроизвести проблему с другой версией Access.

В бутылке mso2003 Access не запускается:
[wine@cellar OFFICE11]$ ww MSACCESS.EXE
err:service:RPC_Init RpcServerListen failed with error 1714
err:wineboot:start_services_process Unexpected termination of services.exe - exit code 1714

В бутылке mso97 Access тоже не запускается. Выдаёт ошибку, что нет файла system.mdw. http://bugs.etersoft.ru/show_bug.cgi?id=1133

При запуске Access XP (бутылка mibofficexp) появляется сообщение об ошибке. При нажатии на OK оно появляется снова и до самого Access добраться не даёт.
Comment 23 Константин Кондратюк 2008-10-15 13:29:15 MSD
После исправления Антоном установки OfficeXP (#610) можно попробовать продолжить работу над багой.
Comment 24 Семенов Александр Алексеевич 2008-10-15 13:36:55 MSD
Добавил в Access к команде Msgbox предварительно Beep. Сигнал идет.
Comment 25 Александр Морозов 2008-10-17 14:10:33 MSD
2 Илья
MessageBeep работает, но вывод сообщений посредством метода docmd.MsgBox не сопровождается сигналом динамика системного блока.
Comment 26 Семенов Александр Алексеевич 2008-10-17 14:34:44 MSD
Ну если он хоть как-то может издаваться - этого лично мне уже достаточно. Спасибо.
Comment 27 Vitaly Lipatov 2008-12-04 21:07:02 MSK
Предлагаю издавать звуковой сигнал через MessageBeep (n)
при наличии в uType
MB_ICONEXCLAMATION
MB_ICONSTOP
MB_ICONERROR
MB_ICONHAND

Остаются ещё эти, на которые не реагируем:
MB_ICONINFORMATION
MB_ICONASTERISK
MB_ICONQUESTION
MB_ICONWARNING

Comment 28 Vitaly Lipatov 2008-12-04 21:14:14 MSK
Сделал коммит, будет в 1.0.10
commit a8b85b47012bbbd3a7c651b4a0d8c7b451a08efe
Author: Vitaly Lipatov <lav@etersoft.ru>
Date:   Thu Dec 4 21:10:42 2008 +0300

    USER32: call MessageBeep according to MessageBox style

+++ b/dlls/user32/msgbox.c
@@ -531,6 +532,11 @@ INT WINAPI MessageBoxIndirectW( LPMSGBOXPARAMSW msgbox )
         EnumThreadWindows(GetCurrentThreadId(), MSGBOX_EnumProc, (LPARAM)&threadWindows);
     }

+    beepStyle = msgbox->dwStyle &
+        (MB_ICONEXCLAMATION|MB_ICONSTOP|MB_ICONERROR|MB_ICONHAND);
+    if (beepStyle)
+        MessageBeep(beepStyle);
+
     ret=DialogBoxIndirectParamW(msgbox->hInstance, tmplate,