1
0
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:
Ykkrosh 2004-09-04 14:40:06 +00:00
parent c164d9b32c
commit 51e20e6ef6
3 changed files with 12 additions and 12 deletions

View File

@ -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);
}
}

View File

@ -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

View File

@ -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