| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Звук, графика и видео > Перестает обновляться TImage из потока |
| Автор: TechnoMag 19.2.2016, 12:32 | ||
| Пишу плейер с использованием bass.dll, визуализацию звука взял из примеров bass с некоторыми упрощениями. Обновление TImage происходит из потока. Проблема в том, что через какое-то время обновление TImage не происходит. Поток при этом работает, и никаких ошибок в лог не пишет (я здесь намеренно убрал строки логирования). TFFTData bass выдает без ошибок. Интервал "замерзания" не предсказуем. Использование BitBlt дает тот же эффект. Пробовал рандомно рисовать прямоугольник без вызовов фнукций bass - тот же эффект.
|
| Автор: Alexeis 19.2.2016, 14:19 |
| VisBuff это TBitMap? Вообще неоконные компоненты плохо подходят для отрисовки в динамике. Криво это работает. А с потоком еще сложнее. Перед отрисовкой в потоке нужно залочить канвас, чтобы графический дескриптор не уничтожили до окончания отрисовки. И в потоке нельзя делать ничего такого, что связанно с отсылкой сообщений окну. Этот момент не так очевиден, поскольку что делает VCL внутри так сразу не скажешь. Более типичен подход, когда вычисляют в дополнительном потоке, а рисуют в главном. |
| Автор: TechnoMag 20.2.2016, 15:58 |
| Да, VisBuff - это TBitmap. А какой компонент тогда посоветуете? Как можно было бы еще реализовать механизм визуализации? Видимо я не стой точки зрения смотрю.... |