OpenSL ES slCreateEngine вызывает ошибку - PullRequest
2 голосов
/ 19 мая 2011

У меня есть вызов функции OpenSL ES, который не вызывает проблем в одном приложении, но вызывает проблему в другом приложении, оба работают на одном устройстве.

Строка:

result = slCreateEngine(&engineObject, 0, NULL, 0, NULL, NULL);

Где результат имеет тип SLresult, engineObject имеет тип SLObjectItf

Я получаю ошибку:

05-19 11:56:27.007: ERROR/libOpenSLES(1425): slCreateEngine while another engine 0x299fa0 is active

Кажется, это не записано в моем коде, но, возможно, это вызвано этим? Так что же может привести к тому, что эта строка выдаст ошибку в одном приложении, а не в другом?

Ответы [ 2 ]

1 голос
/ 20 мая 2011

Как оказалось, это был частично жизненный цикл Android, который вызвал ошибку, но в основном моя собственная ошибка. Это было вызвано методами onCreate () и onResume (), которые Android предоставляет для Activity. Я никогда не думал о том, что onResume () также вызывается при запуске Activity. Из-за этого я так и не понял, что у меня был второй вызов функции slCreateEngine .....

0 голосов
/ 20 мая 2011

Согласно документам "OpenSL ES для Android поддерживает один движок на приложение".У меня была быстрая проверка исходного кода для OpenSL, и я вижу, что это обеспечивается глобальным хранением текущего активного движка.

Так что если вы хотите вызвать slCreateEngine, вы должны убедиться, что все остальные движки были уничтоженыпервый.Это включает в себя возможность использования любого стороннего кода, на который вы добавляете ссылки (в случае, если вы делаете ссылку на что-то еще, что создает объект движка OpenSL, прежде чем вы это сделаете).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...