本文整理汇总了C++中rocket::core::Element::AddReference方法的典型用法代码示例。如果您正苦于以下问题:C++ Element::AddReference方法的具体用法?C++ Element::AddReference怎么用?C++ Element::AddReference使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类rocket::core::Element
的用法示例。
在下文中一共展示了Element::AddReference方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: script
ScriptEventListener( const String &s, int uniqueId, Element *target ) : script( s ),
loaded( false ), released( false ), uniqueId( uniqueId ), target( target ) {
asmodule = UI_Main::Get()->getAS();
if( target ) {
target->AddReference();
}
}
示例2: ProcessEvent
virtual void ProcessEvent( Event &event )
{
if( !target ) {
return;
}
if( released ) {
// the function pointer has been released, but
// we're hanging around, waiting for shutdown or GC
return;
}
Element *elem = event.GetTargetElement();
if( elem->GetOwnerDocument() != target->GetOwnerDocument() ) {
// make sure the event originated from the same document as the original target
return;
}
UI_ScriptDocument *document = dynamic_cast<UI_ScriptDocument *>(elem->GetOwnerDocument());
if( !document || document->IsLoading() ) {
return;
}
fetchFunctionPtr( document->GetModule() );
// push elem and event as parameters to the internal function
// and call it
if( UI_Main::Get()->debugOn() ) {
Com_Printf( "ScriptEventListener: Event %s, target %s, script %s\n",
event.GetType().CString(),
event.GetTargetElement()->GetTagName().CString(),
script.CString() );
}
if( funcPtr.isValid() ) {
target->AddReference();
event.AddReference();
try {
asIScriptContext *context = asmodule->getContext();
// the context may actually be NULL after AS shutdown
if( context ) {
funcPtr.setContext( context );
funcPtr( target, &event );
}
} catch( ASBind::Exception & ) {
Com_Printf( S_COLOR_RED "ScriptEventListener: Failed to call function %s %s\n", funcName.CString(), script.CString() );
}
}
else {
Com_Printf( S_COLOR_RED "ScriptEventListener: Not gonna call invalid function %s %s\n", funcName.CString(), script.CString() );
}
}