iceball icon indicating copy to clipboard operation
iceball copied to clipboard

Rewrite initialization code

Open fkaa opened this issue 9 years ago • 2 comments

Re-starting the application via execv destroys any connection that external programs have with the process (debuggers, steam overlay etc.).

AFAICT the current initialization process goes like this:

  • main
  • Lua (launcher)
  • Launcher calls execv with different args
  • main
  • Lua (game)

To get it to one continous process we would need a way to tear down the launcher code and start up game code. Should this be a hardcoded function? eg. ib_connect_server(ip, port)

fkaa avatar Jan 05 '16 00:01 fkaa

Main reason for execv is because from a security standpoint it's easier to just dump everything and start again from a clean slate.

I'll be blunt and say this issue isn't something I would be willing to attempt, but if you want to have a go at it, feel free.

If anything, it'll make the steam overlay behave for those who like the overlay.

iamgreaser avatar Jan 06 '16 23:01 iamgreaser

Ensuring all setup/teardown is done in one place, that shouldn't be an issue, since reinitialisation should follow the same code path as the original initialisation did, so anything we don't clean wouldn't have been setup in the first place (although any static variables could catch you out I guess). The main problem I see with this is that you'd be deep in the call stack when you want to reset, and you need to get back out of there.

rakiru avatar Jan 06 '16 23:01 rakiru