forked from 0ad/0ad
Realised that there's no need to store the JSObject* as a void*
This was SVN commit r1115.
This commit is contained in:
parent
c164d9b32c
commit
51e20e6ef6
@ -218,7 +218,7 @@ CGUI::CGUI() : m_InternalNameNumber(0), m_MouseButtons(0)
|
||||
m_BaseObject->SetGUI(this);
|
||||
|
||||
// Construct the parent object for all GUI JavaScript things
|
||||
m_ScriptObject = (void*)JS_NewObject(g_ScriptingHost.getContext(), &GUIClass, NULL, NULL);
|
||||
m_ScriptObject = JS_NewObject(g_ScriptingHost.getContext(), &GUIClass, NULL, NULL);
|
||||
assert(m_ScriptObject != NULL); // How should it handle errors?
|
||||
JS_AddRoot(g_ScriptingHost.getContext(), &m_ScriptObject);
|
||||
|
||||
@ -234,7 +234,6 @@ CGUI::~CGUI()
|
||||
if (m_ScriptObject)
|
||||
// Let it be garbage-collected
|
||||
JS_RemoveRoot(g_ScriptingHost.getContext(), &m_ScriptObject);
|
||||
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
@ -1403,7 +1402,7 @@ void CGUI::Xeromyces_ReadScript(XMBElement Element, CXeromyces* pFile)
|
||||
}
|
||||
|
||||
jsval result;
|
||||
JS_EvaluateScript(g_ScriptingHost.getContext(), (JSObject*)m_ScriptObject, (const char*)scriptfile.GetBuffer(), (int)scriptfile.GetBufferSize(), file, 1, &result);
|
||||
JS_EvaluateScript(g_ScriptingHost.getContext(), m_ScriptObject, (const char*)scriptfile.GetBuffer(), (int)scriptfile.GetBufferSize(), file, 1, &result);
|
||||
}
|
||||
|
||||
// Execute inline scripts
|
||||
@ -1413,7 +1412,7 @@ void CGUI::Xeromyces_ReadScript(XMBElement Element, CXeromyces* pFile)
|
||||
{
|
||||
jsval result;
|
||||
// TODO: Report the filename
|
||||
JS_EvaluateScript(g_ScriptingHost.getContext(), (JSObject*)m_ScriptObject, code.c_str(), (int)code.Length(), "Some XML file", Element.getLineNumber(), &result);
|
||||
JS_EvaluateScript(g_ScriptingHost.getContext(), m_ScriptObject, code.c_str(), (int)code.Length(), "Some XML file", Element.getLineNumber(), &result);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -59,6 +59,8 @@ struct SGUIStyle
|
||||
std::map<CStr, CStr> m_SettingsDefaults;
|
||||
};
|
||||
|
||||
struct JSObject; // The GUI stores a JSObject*, so needs to know that JSObject exists
|
||||
|
||||
/**
|
||||
* @author Gustav Larsson
|
||||
*
|
||||
@ -217,9 +219,9 @@ public:
|
||||
/**
|
||||
* Returns the JSObject* associated with the GUI
|
||||
*
|
||||
* @return A JSobject* (as a void* to avoid #including all of JS)
|
||||
* @return The relevant JS object
|
||||
*/
|
||||
void* GetScriptObject() { return m_ScriptObject; }
|
||||
JSObject* GetScriptObject() { return m_ScriptObject; }
|
||||
|
||||
/**
|
||||
* Check if an icon exists
|
||||
@ -477,10 +479,9 @@ private:
|
||||
/**
|
||||
* An JSObject* under which all GUI JavaScript things will
|
||||
* be created, so that they can be garbage-collected
|
||||
* when the GUI shuts down. (Stored as void* to avoid
|
||||
* to avoid pulling in all the JS headers)
|
||||
* when the GUI shuts down.
|
||||
*/
|
||||
void* m_ScriptObject;
|
||||
JSObject* m_ScriptObject;
|
||||
|
||||
/**
|
||||
* don't want to pass this around with the
|
||||
|
@ -432,7 +432,7 @@ void IGUIObject::RegisterScriptHandler(const CStr& Action, const CStr& Code, CGU
|
||||
// Location to report errors from
|
||||
CStr CodeName = GetName()+" "+Action;
|
||||
|
||||
JSFunction* func = JS_CompileFunction(g_ScriptingHost.getContext(), (JSObject*)pGUI->m_ScriptObject, NULL, paramCount, paramNames, (const char*)Code, Code.Length(), CodeName, 0);
|
||||
JSFunction* func = JS_CompileFunction(g_ScriptingHost.getContext(), pGUI->m_ScriptObject, NULL, paramCount, paramNames, (const char*)Code, Code.Length(), CodeName, 0);
|
||||
m_ScriptHandlers[Action] = func;
|
||||
}
|
||||
|
||||
@ -450,7 +450,7 @@ void IGUIObject::ScriptEvent(const CStr& Action)
|
||||
jsval guiObject = PRIVATE_TO_JSVAL(this);
|
||||
|
||||
// Make a 'this', allowing access to the IGUIObject
|
||||
JSObject* jsGuiObject = JS_ConstructObjectWithArguments(g_ScriptingHost.getContext(), &JSI_IGUIObject::JSI_class, NULL, (JSObject*)m_pGUI->m_ScriptObject, 1, &guiObject);
|
||||
JSObject* jsGuiObject = JS_ConstructObjectWithArguments(g_ScriptingHost.getContext(), &JSI_IGUIObject::JSI_class, NULL, m_pGUI->m_ScriptObject, 1, &guiObject);
|
||||
|
||||
// Prevent it from being garbage-collected before
|
||||
// it's passed into the function
|
||||
@ -462,7 +462,7 @@ void IGUIObject::ScriptEvent(const CStr& Action)
|
||||
mouseParams[0] = INT_TO_JSVAL(m_pGUI->m_MousePos.x);
|
||||
mouseParams[1] = INT_TO_JSVAL(m_pGUI->m_MousePos.y);
|
||||
mouseParams[2] = INT_TO_JSVAL(m_pGUI->m_MouseButtons);
|
||||
JSObject* mouseObj = JS_ConstructObjectWithArguments(g_ScriptingHost.getContext(), &JSI_GUIMouse::JSI_class, NULL, (JSObject*)m_pGUI->m_ScriptObject, 3, mouseParams);
|
||||
JSObject* mouseObj = JS_ConstructObjectWithArguments(g_ScriptingHost.getContext(), &JSI_GUIMouse::JSI_class, NULL, m_pGUI->m_ScriptObject, 3, mouseParams);
|
||||
assert(mouseObj); // need better error handling
|
||||
|
||||
// Don't garbage collect the mouse
|
||||
|
Loading…
Reference in New Issue
Block a user