Update of /cvsroot/wxlua/wxLua/modules/wxlua/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20494
Modified Files:
wxlstate.cpp
Log Message:
add "new" instances on bindings for each wxLuaState since the binding members are per lua_State
Index: wxlstate.cpp
===================================================================
RCS file: /cvsroot/wxlua/wxLua/modules/wxlua/src/wxlstate.cpp,v
retrieving revision 1.16
retrieving revision 1.17
diff -C2 -d -r1.16 -r1.17
*** wxlstate.cpp 22 Dec 2005 19:52:50 -0000 1.16
--- wxlstate.cpp 29 Dec 2005 20:10:19 -0000 1.17
***************
*** 49,54 ****
extern int wxLuaClassListCompareByTag(const void *p1, const void *p2); // wxlbind.cpp
! extern const char* wxLuaNull;
!
extern int s_wxluatag_wxWindow;
--- 49,53 ----
extern int wxLuaClassListCompareByTag(const void *p1, const void *p2); // wxlbind.cpp
! const char wxLuaNull_[] = "wxNull"; // FIXME gcc can't link to this even if extern
extern int s_wxluatag_wxWindow;
***************
*** 88,95 ****
// Stick us into the lua_State - push key, value
! lua_pushstring( L1, "__wxLuaStateRefData" );
! lua_pushlightuserdata( L1, (void*)wxlState.GetRefData() );
// set the value
! lua_settable( L1, LUA_REGISTRYINDEX );
}
--- 87,94 ----
// Stick us into the lua_State - push key, value
! //lua_pushstring( L1, "__wxLuaStateRefData" );
! //lua_pushlightuserdata( L1, (void*)wxlState.GetRefData() );
// set the value
! //lua_settable( L1, LUA_REGISTRYINDEX );
}
***************
*** 536,540 ****
m_windowList.DeleteContents(false);
! m_bindings.DeleteContents(false);
wxLuaBindingList::Node *node;
--- 535,539 ----
m_windowList.DeleteContents(false);
! m_bindings.DeleteContents(true); // we add new copies of the bindings
wxLuaBindingList::Node *node;
***************
*** 542,546 ****
{
wxLuaBinding* binding = node->GetData();
! m_bindings.Append(binding);
}
}
--- 541,545 ----
{
wxLuaBinding* binding = node->GetData();
! m_bindings.Append(binding->Clone());
}
}
***************
*** 568,571 ****
--- 567,578 ----
delete m_pDerivedList;
delete m_pTrackedList;
+
+ wxLuaBindingList::Node *node = m_bindings.GetFirst();
+ while (node)
+ {
+ wxLuaBindingList::Node* next_node = node->GetNext();
+ m_bindings.DeleteNode(node); // see m_bindings.DeleteContents(true)
+ node = next_node;
+ }
}
***************
*** 2017,2021 ****
if (nTag == M_WXLSTATEDATA->m_wxLuaNull)
! return wxLuaNull;
if (nTag == M_WXLSTATEDATA->m_functionTag)
return "wxLuaFunction";
--- 2024,2028 ----
if (nTag == M_WXLSTATEDATA->m_wxLuaNull)
! return wxLuaNull_;
if (nTag == M_WXLSTATEDATA->m_functionTag)
return "wxLuaFunction";
|