diff --git a/CMakeLists.txt b/CMakeLists.txt index 8533da5cb..582a2fa34 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1215,8 +1215,8 @@ if(MEGA_EXTRA_DEPENDECIES) endif() if(MSVC) - set_target_properties(${LOVE_LIB_NAME} PROPERTIES RELEASE_OUTPUT_NAME "love" PDB_NAME "liblove") - set_target_properties(${LOVE_LIB_NAME} PROPERTIES DEBUG_OUTPUT_NAME "love" PDB_NAME "liblove") + set_target_properties(${LOVE_LIB_NAME} PROPERTIES RELEASE_OUTPUT_NAME "love" PDB_NAME "liblove" IMPORT_PREFIX "lib") + set_target_properties(${LOVE_LIB_NAME} PROPERTIES DEBUG_OUTPUT_NAME "love" PDB_NAME "liblove" IMPORT_PREFIX "lib") endif() # diff --git a/changes.txt b/changes.txt index 5bd035e62..41d63fde9 100644 --- a/changes.txt +++ b/changes.txt @@ -52,6 +52,7 @@ LOVE 0.9.2 [Baby Inspector] Released: N/A + * Added Lua 5.3's UTF-8 module (via utf8 = require("utf8")). * Added Shader:getExternVariable. * Added several new canvas texture formats. * Added love.graphics.getCanvasFormats. @@ -61,6 +62,7 @@ LOVE 0.9.2 [Baby Inspector] * Added SpriteBatch:flush. * Added love.graphics.getStats. * Added "mirroredrepeat" wrap mode. + * Added love.audio.setDopplerScale and love.audio.getDopplerScale. * Added optional duration argument to Joystick:setVibration. * Added love.joystick.loadGamepadMappings and love.joystick.saveGamepadMappings. * Added Joint:setUserData and Joint:getUserData. @@ -69,8 +71,13 @@ LOVE 0.9.2 [Baby Inspector] * Added Contact:getFixtures and Body:getContactList. * Added Body:getWorld. * Added Body:getJointList. + * Added Body/Contact/Fixture/Joint/World:isDestroyed. + * Added love.mousemoved event callback. + * Added love.mouse.setRelativeMode and love.mouse.getRelativeMode. + * Added Scancode enums, love.keyboard.getKeyFromScancode, and love.keyboard.getScancodeFromKey. * Added love.window.getDisplayName. * Added love.window.minimize. + * Added love.window.maximize. * Added love.window.showMessageBox. * Added 'refreshrate' field to the table returned by love.window.getMode. * Added love.window.toPixels and love.window.fromPixels. @@ -82,11 +89,16 @@ LOVE 0.9.2 [Baby Inspector] * Deprecated the 'hdrcanvas' graphics feature enum in favor of getCanvasFormats. * Deprecated the 'dxt' and 'bc5' graphics feature enums in favor of getCompressedImageFormats. + * Fixed crashes when love objects are used in multiple threads. * Fixed love.filesystem.setIdentity breaking in some situations when called multiple times. * Fixed the default love.filesystem identity when in Fused mode in Windows. * Fixed love.system.openURL sometimes blocking indefinitely on Linux. * Fixed love.joystick.setGamepadMapping. * Fixed the order of vertices in ChainShapes. + * Fixed love.mouse.getPosition returning outdated values if love.mouse.setPosition is used in the same frame. + * Fixed love.graphics.newFont to error when given an invalid size argument. + * Fixed the filename and backtrace given when love.graphics.print errors. + * Fixed a small memory leak if love.graphics.newCanvas errors. * Fixed shader:getWarnings returning unnecessary information. * Fixed some cases of noncompliant shader code not properly erroring on some nvidia drivers. * Fixed a potential crash when Shader objects are garbage collected. @@ -108,6 +120,9 @@ LOVE 0.9.2 [Baby Inspector] * Renamed all cases of FSAA to MSAA. The FSAA names still exist for backward-compatibility. + * Updated the Windows executable to automatically prefer the higher performance GPU on nvidia Optimus systems. + * Updated the --console command-line argument in Windows to open the console before conf.lua is loaded. + * Updated the love executable to verify that the love library's version matches. * Updated the Lua wrapper code for modules to avoid crashes when the module's instance is created, deleted, and recreated. * Updated internal code for handling garbage collection of love objects to be more efficient. * Updated love's initialization code to trigger a Lua error if love.conf has an error in it. diff --git a/src/love.cpp b/src/love.cpp index 64e3fed72..3543136d6 100644 --- a/src/love.cpp +++ b/src/love.cpp @@ -39,6 +39,17 @@ extern "C" { #include "OSX.h" #endif // LOVE_MACOSX +#ifdef LOVE_WINDOWS +extern "C" +{ +// Prefer the higher performance GPU on Windows systems that use nvidia Optimus. +// http://developer.download.nvidia.com/devzone/devcenter/gamegraphics/files/OptimusRenderingPolicies.pdf +// TODO: Re-evaluate in the future when the average integrated GPU in Optimus +// systems is less mediocre? +LOVE_EXPORT DWORD NvOptimusEnablement = 0x00000001; +} +#endif + #ifdef LOVE_LEGENDARY_UTF8_ARGV_HACK void get_utf8_arguments(int &argc, char **&argv) diff --git a/src/modules/filesystem/wrap_Filesystem.cpp b/src/modules/filesystem/wrap_Filesystem.cpp index 94b0f68ea..474a2d5a4 100644 --- a/src/modules/filesystem/wrap_Filesystem.cpp +++ b/src/modules/filesystem/wrap_Filesystem.cpp @@ -283,6 +283,24 @@ int w_getSourceBaseDirectory(lua_State *L) return 1; } +int w_getRealDirectory(lua_State *L) +{ + const char *filename = luaL_checkstring(L, 1); + std::string dir; + + try + { + dir = instance()->getRealDirectory(filename); + } + catch (love::Exception &e) + { + return luax_ioError(L, "%s", e.what()); + } + + lua_pushstring(L, dir.c_str()); + return 1; +} + int w_isDirectory(lua_State *L) { const char *arg = luaL_checkstring(L, 1); @@ -666,6 +684,7 @@ static const luaL_Reg functions[] = { "getAppdataDirectory", w_getAppdataDirectory }, { "getSaveDirectory", w_getSaveDirectory }, { "getSourceBaseDirectory", w_getSourceBaseDirectory }, + { "getRealDirectory", w_getRealDirectory }, { "isDirectory", w_isDirectory }, { "isFile", w_isFile }, { "createDirectory", w_createDirectory }, diff --git a/src/modules/filesystem/wrap_Filesystem.h b/src/modules/filesystem/wrap_Filesystem.h index d4e91c277..d89455fb2 100644 --- a/src/modules/filesystem/wrap_Filesystem.h +++ b/src/modules/filesystem/wrap_Filesystem.h @@ -56,6 +56,7 @@ int w_getUserDirectory(lua_State *L); int w_getAppdataDirectory(lua_State *L); int w_getSaveDirectory(lua_State *L); int w_getSourceBaseDirectory(lua_State *L); +int w_getRealDirectory(lua_State *L); int w_isDirectory(lua_State *L); int w_isFile(lua_State *L); int w_createDirectory(lua_State *L);