From 4a9b1736f5d10c9804bd229750f9ba4350777b49 Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Fri, 22 Sep 2006 04:46:47 +0000 Subject: [PATCH] flip GetMetric(ref) and GetMetricR(), so there's an interface exposed that doens't copy the reference. Copying refs isn't expensive, but it does lock Lua. --- stepmania/src/ThemeManager.cpp | 12 ++++++++---- stepmania/src/ThemeManager.h | 2 +- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/stepmania/src/ThemeManager.cpp b/stepmania/src/ThemeManager.cpp index 50b16d72ff..f7364af294 100644 --- a/stepmania/src/ThemeManager.cpp +++ b/stepmania/src/ThemeManager.cpp @@ -971,14 +971,18 @@ RageColor ThemeManager::GetMetricC( const RString &sClassName, const RString &sV } LuaReference ThemeManager::GetMetricR( const RString &sClassName, const RString &sValueName ) +{ + LuaReference ref; + GetMetric( sClassName, sValueName, ref ); + return ref; +} + +void ThemeManager::GetMetric( const RString &sClassName, const RString &sValueName, LuaReference &valueOut ) { RString sValue = GetMetricRaw( g_pLoadedThemeData->iniMetrics, sClassName, sValueName ); LuaHelpers::PrepareExpression( sValue ); - - LuaReference ref; - ref.SetFromExpression( sValue ); - return ref; + valueOut.SetFromExpression( sValue ); } #if !defined(SMPACKAGE) diff --git a/stepmania/src/ThemeManager.h b/stepmania/src/ThemeManager.h index a1ca193ea4..b7f81ab538 100644 --- a/stepmania/src/ThemeManager.h +++ b/stepmania/src/ThemeManager.h @@ -85,7 +85,7 @@ public: void GetMetric( const RString &sClassName, const RString &sValueName, float &valueOut ) { valueOut = GetMetricF( sClassName, sValueName ); } void GetMetric( const RString &sClassName, const RString &sValueName, bool &valueOut ) { valueOut = GetMetricB( sClassName, sValueName ); } void GetMetric( const RString &sClassName, const RString &sValueName, RageColor &valueOut ) { valueOut = GetMetricC( sClassName, sValueName ); } - void GetMetric( const RString &sClassName, const RString &sValueName, LuaReference &valueOut ) { valueOut = GetMetricR( sClassName, sValueName ); } + void GetMetric( const RString &sClassName, const RString &sValueName, LuaReference &valueOut ); #if !defined(SMPACKAGE) void GetMetric( const RString &sClassName, const RString &sValueName, apActorCommands &valueOut ); #endif