From: John L. <jr...@us...> - 2007-05-19 02:05:52
|
Update of /cvsroot/wxlua/wxLua/samples In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv11964/wxLua/samples Modified Files: editor.wx.lua Log Message: Make wxProcess Kill and Exists functions %staticonly Remove all exception code from wxLuaSocket code (debugger code) Rename wxLuaSocket to wxLuaCSocket and move wxLuaDebuggerSocket to wxLuawxSocket we have two options C or wx sockets now... both work in 2.8 GTK2 Lots of reorganization in server and socket code Update the editor.wx.lua for new code and only Delete() the debugger server in EVT_IDLE to give it a chance to exit gracefully Index: editor.wx.lua =================================================================== RCS file: /cvsroot/wxlua/wxLua/samples/editor.wx.lua,v retrieving revision 1.46 retrieving revision 1.47 diff -C2 -d -r1.46 -r1.47 *** editor.wx.lua 9 May 2007 01:40:22 -0000 1.46 --- editor.wx.lua 19 May 2007 02:05:47 -0000 1.47 *************** *** 110,115 **** debuggerServer = nil -- wxLuaDebuggerServer object when debugging, else nil debuggee_running = false -- true when the debuggee is running ! debugger_connected = false -- true when a client has connected debuggerPortNumber = 1551 -- the port # to use for debugging --- 110,117 ---- debuggerServer = nil -- wxLuaDebuggerServer object when debugging, else nil + debuggerServer_ = nil -- temp wxLuaDebuggerServer object for deletion debuggee_running = false -- true when the debuggee is running ! debugger_destroy = 0 -- > 0 if the debugger is to be destroyed in wxEVT_IDLE ! debuggee_pid = 0 -- pid of the debuggee process debuggerPortNumber = 1551 -- the port # to use for debugging *************** *** 1825,1846 **** function CreateDebuggerServer() debuggerServer = wx.wxLuaDebuggerServer(debuggerPortNumber) local ok = debuggerServer:StartServer() if not ok then ! debuggerServer:Delete() ! debuggerServer = nil DisplayOutput("Error starting the debug server.\n") return nil end - local function DownloadBreakpoints(editor, fileName) - local nextLine = editor:MarkerNext(0, BREAKPOINT_MARKER_VALUE) - while nextLine ~= -1 do - debuggerServer:AddBreakPoint(fileName, nextLine) - nextLine = editor:MarkerNext(nextLine + 1, BREAKPOINT_MARKER_VALUE) - end - end - debuggerServer:Connect(wx.wxEVT_WXLUA_DEBUGGER_DEBUGGEE_CONNECTED, function (event) --- 1827,1849 ---- function CreateDebuggerServer() + if (debuggerServer) then + -- we just delete it here, but this shouldn't happen + debugger_destroy = 0 + local ds = debuggerServer + debuggerServer = nil + ds:StopServer() + ds:Delete() + end + + debuggee_running = false debuggerServer = wx.wxLuaDebuggerServer(debuggerPortNumber) local ok = debuggerServer:StartServer() if not ok then ! DestroyDebuggerServer() DisplayOutput("Error starting the debug server.\n") return nil end debuggerServer:Connect(wx.wxEVT_WXLUA_DEBUGGER_DEBUGGEE_CONNECTED, function (event) *************** *** 1854,1858 **** local filePath = MakeDebugFileName(editor, document.filePath) ok = debuggerServer:Run(filePath, editorText) ! DownloadBreakpoints(editor, filePath) --end --- 1857,1866 ---- local filePath = MakeDebugFileName(editor, document.filePath) ok = debuggerServer:Run(filePath, editorText) ! ! local nextLine = editor:MarkerNext(0, BREAKPOINT_MARKER_VALUE) ! while nextLine ~= -1 do ! debuggerServer:AddBreakPoint(fileName, nextLine) ! nextLine = editor:MarkerNext(nextLine + 1, BREAKPOINT_MARKER_VALUE) ! end --end *************** *** 1860,1864 **** ok = debuggerServer:Step() end - debugger_connected = ok debuggee_running = ok --- 1868,1871 ---- *************** *** 1874,1881 **** debuggerServer:Connect(wx.wxEVT_WXLUA_DEBUGGER_DEBUGGEE_DISCONNECTED, function (event) - DisplayOutput(event:GetMessage().."\n") DisplayOutput("Debug server disconnected.\n") ! debuggerServer:Delete() ! debuggerServer = nil end) --- 1881,1887 ---- debuggerServer:Connect(wx.wxEVT_WXLUA_DEBUGGER_DEBUGGEE_DISCONNECTED, function (event) DisplayOutput("Debug server disconnected.\n") ! DisplayOutput(event:GetMessage().."\n\n") ! DestroyDebuggerServer() end) *************** *** 1972,1982 **** ClearAllCurrentLineMarkers() - debugger_connected = false if debuggerServer then ! debuggerServer:Delete() ! debuggerServer = nil ! debuggee_running = false end SetAllEditorsReadOnly(false) ignoredFilesList = {} end) --- 1978,1987 ---- ClearAllCurrentLineMarkers() if debuggerServer then ! DestroyDebuggerServer() end + DisplayOutput("\nDebugger Client finished1.\n\n") SetAllEditorsReadOnly(false) + DisplayOutput("\nDebugger Client finished2.\n\n") ignoredFilesList = {} end) *************** *** 1994,1997 **** --- 1999,2038 ---- end + function DestroyDebuggerServer() + -- nil debuggerServer so it won't be used and set flag to destroy it in idle + if (debuggerServer) then + debuggerServer_ = debuggerServer + debuggerServer = nil + debugger_destroy = 1 -- set > 0 to initiate deletion in idle + end + end + + frame:Connect(wx.wxEVT_IDLE, + function(event) + if (debugger_destroy > 0) then + debugger_destroy = debugger_destroy + 1 + end + if (debugger_destroy > 4) then + debugger_destroy = 0; + local ds = debuggerServer_ + debuggerServer_ = nil + ds:StopServer() + ds:Delete() + debuggee_running = false + + if (debuggee_pid > 0) then + if wx.wxProcess_Exists(debuggee_pid) then + local ret = wx.wxProcess_Kill(debuggee_pid, wx.wxSIGKILL, wx.wxKILL_CHILDREN) + if (ret ~= wx.wxKILL_OK) then + DisplayOutput("Unable to kill debuggee process "..debuggee_pid..".\n") + end + end + debuggee_pid = 0 + end + end + event:Skip() + end) + + frame:Connect(ID_START_DEBUG, wx.wxEVT_COMMAND_MENU_SELECTED, function (event) *************** *** 2002,2012 **** end ! local pid = -1 debuggerServer = CreateDebuggerServer() if debuggerServer then ! pid = debuggerServer:StartClient() end ! if debuggerServer and (pid > 0) then SetAllEditorsReadOnly(true) DisplayOutput("Waiting for client connection.\n") --- 2043,2053 ---- end ! debuggee_pid = 0 debuggerServer = CreateDebuggerServer() if debuggerServer then ! debuggee_pid = debuggerServer:StartClient() end ! if debuggerServer and (debuggee_pid > 0) then SetAllEditorsReadOnly(true) DisplayOutput("Waiting for client connection.\n") *************** *** 2014,2019 **** DisplayOutput("Unable to start debuggee process.\n") if debuggerServer then ! debuggerServer:Delete() ! debuggerServer = nil end end --- 2055,2059 ---- DisplayOutput("Unable to start debuggee process.\n") if debuggerServer then ! DestroyDebuggerServer() end end *************** *** 2031,2041 **** ClearAllCurrentLineMarkers() - debugger_connected = false if debuggerServer then ! local ds = debuggerServer ! debuggerServer = nil ! ds:Reset() ! ds:StopServer() ! ds:Delete() end SetAllEditorsReadOnly(false) --- 2071,2076 ---- ClearAllCurrentLineMarkers() if debuggerServer then ! DestroyDebuggerServer() end SetAllEditorsReadOnly(false) *************** *** 2255,2264 **** end - debugger_connected = false if debuggerServer then ! --debuggerServer:Reset() ! debuggerServer:KillDebuggee() ! debuggerServer:Delete() debuggerServer = nil end debuggee_running = false --- 2290,2299 ---- end if debuggerServer then ! local ds = debuggerServer debuggerServer = nil + --ds:Reset() + ds:KillDebuggee() + ds:Delete() end debuggee_running = false |