У меня есть проблема, которая, я полагаю, должна быть очень распространенной, и большинство из вас столкнулись бы с ней. Я написал программу на lua, скажем, main.lua, которая при получении ключевого события должна изменять координаты и отображать геометрическую фигуру. Этот код lua вызывает reg.c, где он как бы регистрируется. Теперь в reg.c у меня есть механизм функций, который получает нажатую клавишу и передает ее функции lua, отвечающей за обработку клавиш. Но к тому времени, когда наступает ключевое событие, код lua завершает регистрацию и завершает работу, поэтому вызов из engine() становится незаконным доступом к памяти, что приводит к ошибке сегментации.
Также я полагаю, что у нас не может быть зависания вызова lua в функции reg и вызова функции движка откуда-то еще.
Тогда какое должно быть решение, пожалуйста, проведите меня через это.
@jacob: вот прототип того, чего я пытаюсь достичь:
function key_handler() //this function will get the latest key pressed from some other function
{
draw.image();
draw.geometry();
...
...
while(1)
{
//draw Points until some condition goes wrong
}
}
Теперь, после входа в key_handler, пока он занят рисованием точек, если и до тех пор, пока не возникнет условие отказа, я не могу получить нажатую клавишу до этого времени.
Я надеюсь, что это объяснение намного проще и донесло мою точку зрения, а также поможет другим понять проблему. Мне очень жаль, но я не умею выражать или заставлять других понимать.
Еще одна вещь, которую я объяснил синтаксисом C, однако это полностью реализовано в lua.
reg.c
, то же самое дляengine()
). Пожалуйста, уточните и дайте минимальный пример кода, чтобы продемонстрировать, что не работает. - person jpjacobs   schedule 27.06.2012