Merge remote-tracking branch 'upstream/master'

This commit is contained in:
Damian Zhaoying
2012-07-18 03:16:39 -03:00
41 changed files with 436 additions and 324 deletions

View File

@@ -269,14 +269,23 @@ if (DARWIN)
add_definitions(-DLL_DARWIN=1 -D_XOPEN_SOURCE) add_definitions(-DLL_DARWIN=1 -D_XOPEN_SOURCE)
set(CMAKE_CXX_LINK_FLAGS "-Wl,-headerpad_max_install_names,-search_paths_first") set(CMAKE_CXX_LINK_FLAGS "-Wl,-headerpad_max_install_names,-search_paths_first")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_CXX_LINK_FLAGS}") set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_CXX_LINK_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mlong-branch") if(${CMAKE_C_COMPILER} MATCHES "gcc*")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mlong-branch") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mlong-branch")
# NOTE: it's critical that the optimization flag is put in front. set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mlong-branch")
# NOTE: it's critical to have both CXX_FLAGS and C_FLAGS covered. # NOTE: it's critical that the optimization flag is put in front.
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -msse3 -mtune=generic -mfpmath=sse ${GCC_EXTRA_OPTIMIZATIONS}") # NOTE: it's critical to have both CXX_FLAGS and C_FLAGS covered.
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O3 -msse3 -mtune=generic -mfpmath=sse ${GCC_EXTRA_OPTIMIZATIONS}") set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -msse3 -mtune=generic -mfpmath=sse ${GCC_EXTRA_OPTIMIZATIONS}")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -O3 -msse3 -mtune=generic -mfpmath=sse ${GCC_EXTRA_OPTIMIZATIONS}") set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O3 -msse3 -mtune=generic -mfpmath=sse ${GCC_EXTRA_OPTIMIZATIONS}")
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -O3 -msse3 -mtune=generic -mfpmath=sse ${GCC_EXTRA_OPTIMIZATIONS}") set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -O3 -msse3 -mtune=generic -mfpmath=sse ${GCC_EXTRA_OPTIMIZATIONS}")
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -O3 -msse3 -mtune=generic -mfpmath=sse ${GCC_EXTRA_OPTIMIZATIONS}")
elseif(${CMAKE_C_COMPILER} MATCHES "clang*")
# NOTE: it's critical that the optimization flag is put in front.
# NOTE: it's critical to have both CXX_FLAGS and C_FLAGS covered.
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -msse3")
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O3 -msse3")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -O3 -msse3")
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -O3 -msse3")
endif()
endif (DARWIN) endif (DARWIN)

View File

@@ -14,6 +14,9 @@ else (STANDALONE)
optimized libcurl) optimized libcurl)
else (WINDOWS) else (WINDOWS)
set(CURL_LIBRARIES curl) set(CURL_LIBRARIES curl)
if(LINUX AND WORD_SIZE EQUAL 64)
list(APPEND CURL_LIBRARIES idn)
endif(LINUX AND WORD_SIZE EQUAL 64)
endif (WINDOWS) endif (WINDOWS)
set(CURL_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include) set(CURL_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include)
endif (STANDALONE) endif (STANDALONE)

View File

@@ -18,7 +18,7 @@ if (NOT FMODEX_LIBRARY)
set(FMODEX_SDK_DIR CACHE PATH "Path to the FMOD Ex SDK.") set(FMODEX_SDK_DIR CACHE PATH "Path to the FMOD Ex SDK.")
if (FMODEX_SDK_DIR) if (FMODEX_SDK_DIR)
find_library(FMODEX_LIBRARY find_library(FMODEX_LIBRARY
fmodex fmodex_vc fmodexL_vc fmodex_vc fmodexL_vc fmodex fmodexL fmodex64 fmodexL64
PATHS PATHS
${FMODEX_SDK_DIR}/api/lib ${FMODEX_SDK_DIR}/api/lib
${FMODEX_SDK_DIR}/api ${FMODEX_SDK_DIR}/api

View File

@@ -1,12 +1,16 @@
# -*- cmake -*- # -*- cmake -*-
include(Prebuilt) include(Prebuilt)
if(WORD_SIZE EQUAL 64)
set(DISABLE_TCMALLOC TRUE)
endif(WORD_SIZE EQUAL 64)
if (STANDALONE) if (STANDALONE)
include(FindGooglePerfTools) include(FindGooglePerfTools)
else (STANDALONE) else (STANDALONE)
if (LINUX OR WINDOWS) if (LINUX OR WINDOWS AND NOT WORD_SIZE EQUAL 64)
use_prebuilt_binary(gperftools) use_prebuilt_binary(gperftools)
endif (LINUX OR WINDOWS) endif (LINUX OR WINDOWS AND NOT WORD_SIZE EQUAL 64)
if (WINDOWS) if (WINDOWS)
set(TCMALLOC_LIBRARIES libtcmalloc_minimal.lib) set(TCMALLOC_LIBRARIES libtcmalloc_minimal.lib)
set(TCMALLOC_LINKER_FLAGS "/INCLUDE:\"__tcmalloc\"") set(TCMALLOC_LINKER_FLAGS "/INCLUDE:\"__tcmalloc\"")

View File

@@ -13,8 +13,8 @@ else (STANDALONE)
set(JPEG_LIBRARIES jpeg) set(JPEG_LIBRARIES jpeg)
elseif (DARWIN) elseif (DARWIN)
set(JPEG_LIBRARIES set(JPEG_LIBRARIES
optimized ${ARCH_PREBUILT_DIRS_RELEASE}/liblljpeg.a optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libjpeg.a
debug ${ARCH_PREBUILT_DIRS_DEBUG}/liblljpeg.a debug ${ARCH_PREBUILT_DIRS_DEBUG}/libjpeg.a
) )
elseif (WINDOWS) elseif (WINDOWS)
set(JPEG_LIBRARIES jpeglib) set(JPEG_LIBRARIES jpeglib)

View File

@@ -14,7 +14,7 @@ else (STANDALONE)
debug json_vc${MSVC_SUFFIX}d debug json_vc${MSVC_SUFFIX}d
optimized json_vc${MSVC_SUFFIX}) optimized json_vc${MSVC_SUFFIX})
elseif (DARWIN) elseif (DARWIN)
set(JSONCPP_LIBRARIES json_mac-universal-gcc_libmt) set(JSONCPP_LIBRARIES json_linux-gcc-4.0.1_libmt)
elseif (LINUX) elseif (LINUX)
set(JSONCPP_LIBRARIES jsoncpp) set(JSONCPP_LIBRARIES jsoncpp)
endif (WINDOWS) endif (WINDOWS)

View File

@@ -18,7 +18,11 @@ else (STANDALONE)
use_prebuilt_binary(SDL) use_prebuilt_binary(SDL)
set (SDL_FOUND TRUE) set (SDL_FOUND TRUE)
set (SDL_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}) set (SDL_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR})
set (SDL_LIBRARY SDL directfb fusion direct) if(WORD_SIZE EQUAL 64)
set (SDL_LIBRARY SDL)
else(WORD_SIZE EQUAL 64)
set (SDL_LIBRARY SDL directfb fusion direct)
endif(WORD_SIZE EQUAL 64)
endif (LINUX) endif (LINUX)
endif (STANDALONE) endif (STANDALONE)

View File

@@ -10,9 +10,9 @@ if (NOT STANDALONE)
set(ARCH_PREBUILT_DIRS_RELEASE ${ARCH_PREBUILT_DIRS}) set(ARCH_PREBUILT_DIRS_RELEASE ${ARCH_PREBUILT_DIRS})
set(ARCH_PREBUILT_DIRS_DEBUG ${ARCH_PREBUILT_DIRS}) set(ARCH_PREBUILT_DIRS_DEBUG ${ARCH_PREBUILT_DIRS})
elseif (DARWIN) elseif (DARWIN)
set(ARCH_PREBUILT_DIRS_RELEASE ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/lib_release) set(ARCH_PREBUILT_DIRS ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/lib)
set(ARCH_PREBUILT_DIRS ${ARCH_PREBUILT_DIRS_RELEASE}) set(ARCH_PREBUILT_DIRS_RELEASE ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/lib/release)
set(ARCH_PREBUILT_DIRS_DEBUG ${ARCH_PREBUILT_DIRS_RELEASE}) set(ARCH_PREBUILT_DIRS_DEBUG ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/lib/debug)
endif (WINDOWS) endif (WINDOWS)
endif (NOT STANDALONE) endif (NOT STANDALONE)

View File

@@ -16,8 +16,6 @@ else (STANDALONE)
set(OPENSSL_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include) set(OPENSSL_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include)
endif (STANDALONE) endif (STANDALONE)
if (LINUX) if (LINUX OR DARWIN)
set(CRYPTO_LIBRARIES crypto) set(CRYPTO_LIBRARIES crypto)
elseif (DARWIN) endif (LINUX OR DARWIN)
set(CRYPTO_LIBRARIES llcrypto)
endif (LINUX)

View File

@@ -76,37 +76,36 @@ endif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
set(DARWIN 1) set(DARWIN 1)
#SDK Compiler and Deployment targets for XCode if(${CMAKE_GENERATOR} MATCHES Xcode)
if (${XCODE_VERSION} VERSION_LESS 4.0.0) #SDK Compiler and Deployment targets for XCode
set(CMAKE_OSX_SYSROOT /Developer/SDKs/MacOSX10.5.sdk) if (${XCODE_VERSION} VERSION_LESS 4.0.0)
set(CMAKE_XCODE_ATTIBUTE_GCC_VERSION "4.2") set(CMAKE_OSX_SYSROOT /Developer/SDKs/MacOSX10.5.sdk)
else (${XCODE_VERSION} VERSION_LESS 4.0.0) set(CMAKE_OSX_DEPLOYMENT_TARGET 10.5)
set(CMAKE_XCODE_ATTIBUTE_GCC_VERSION "4.2")
else (${XCODE_VERSION} VERSION_LESS 4.0.0)
set(CMAKE_OSX_SYSROOT /Developer/SDKs/MacOSX10.6.sdk)
set(CMAKE_OSX_DEPLOYMENT_TARGET 10.6)
set(CMAKE_XCODE_ATTRIBUTE_GCC_VERSION "com.apple.compilers.llvmgcc42")
endif (${XCODE_VERSION} VERSION_LESS 4.0.0)
else()
set(CMAKE_OSX_SYSROOT /Developer/SDKs/MacOSX10.6.sdk) set(CMAKE_OSX_SYSROOT /Developer/SDKs/MacOSX10.6.sdk)
set(CMAKE_OSX_DEPLOYMENT_TARGET 10.6)
set(CMAKE_XCODE_ATTRIBUTE_GCC_VERSION "com.apple.compilers.llvmgcc42") set(CMAKE_XCODE_ATTRIBUTE_GCC_VERSION "com.apple.compilers.llvmgcc42")
endif (${XCODE_VERSION} VERSION_LESS 4.0.0) endif(${CMAKE_GENERATOR} MATCHES Xcode)
set(CMAKE_OSX_DEPLOYMENT_TARGET 10.5) ## We currently support only 32-bit i386 builds, so use these:
set(CMAKE_OSX_ARCHITECTURES i386)
set(ARCH i386)
set(WORD_SIZE 32)
# NOTE: To attempt an i386/PPC Universal build, add this on the configure line: ## But if you want to compile for mixed 32/64 bit, try these:
# -DCMAKE_OSX_ARCHITECTURES:STRING='i386;ppc' # set(CMAKE_OSX_ARCHITECTURES i386;x86_64)
# Build only for i386 by default, system default on MacOSX 10.6 is x86_64 # set(ARCH universal)
if (NOT CMAKE_OSX_ARCHITECTURES) # set(WORD_SIZE 64)
set(CMAKE_OSX_ARCHITECTURES i386)
endif (NOT CMAKE_OSX_ARCHITECTURES)
if (CMAKE_OSX_ARCHITECTURES MATCHES "i386" AND CMAKE_OSX_ARCHITECTURES MATCHES "ppc")
set(ARCH universal)
else (CMAKE_OSX_ARCHITECTURES MATCHES "i386" AND CMAKE_OSX_ARCHITECTURES MATCHES "ppc")
if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "ppc")
set(ARCH ppc)
else (${CMAKE_SYSTEM_PROCESSOR} MATCHES "ppc")
set(ARCH i386)
endif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "ppc")
endif (CMAKE_OSX_ARCHITECTURES MATCHES "i386" AND CMAKE_OSX_ARCHITECTURES MATCHES "ppc")
## Finally, set up the build output directories
set(LL_ARCH ${ARCH}_darwin) set(LL_ARCH ${ARCH}_darwin)
set(LL_ARCH_DIR universal-darwin) set(LL_ARCH_DIR universal-darwin)
set(WORD_SIZE 32)
endif (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") endif (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")

View File

@@ -43,10 +43,14 @@ template <typename Type> class LLAtomic32;
typedef LLAtomic32<U32> LLAtomicU32; typedef LLAtomic32<U32> LLAtomicU32;
class LLErrorThread; class LLErrorThread;
class LLLiveFile; class LLLiveFile;
#if LL_LINUX #if LL_LINUX
typedef struct siginfo siginfo_t; #include <signal.h>
//typedef struct siginfo siginfo_t; //Removed as per changes in glibc 2.16 - Drake Arconis
#endif #endif
typedef void (*LLAppErrorHandler)(); typedef void (*LLAppErrorHandler)();
typedef void (*LLAppChildCallback)(int pid, bool exited, int status); typedef void (*LLAppChildCallback)(int pid, bool exited, int status);

View File

@@ -930,7 +930,7 @@ void LLGLManager::initExtensions()
mHasFramebufferMultisample = mHasFramebufferObject && ExtensionExists("GL_EXT_framebuffer_multisample", gGLHExts.mSysExts); mHasFramebufferMultisample = mHasFramebufferObject && ExtensionExists("GL_EXT_framebuffer_multisample", gGLHExts.mSysExts);
mHasMipMapGeneration = mHasFramebufferObject || mGLVersion >= 1.4f; mHasMipMapGeneration = mHasFramebufferObject || mGLVersion >= 1.4f;
mHasDrawBuffers = ExtensionExists("GL_ARB_draw_buffers", gGLHExts.mSysExts); mHasDrawBuffers = ExtensionExists("GL_ARB_draw_buffers", gGLHExts.mSysExts);
mHasBlendFuncSeparate = ExtensionExists("GL_EXT_blend_func_separate", gGLHExts.mSysExts); mHasBlendFuncSeparate = ExtensionExists("GL_EXT_blend_func_separate", gGLHExts.mSysExts);
mHasTextureRectangle = ExtensionExists("GL_ARB_texture_rectangle", gGLHExts.mSysExts); mHasTextureRectangle = ExtensionExists("GL_ARB_texture_rectangle", gGLHExts.mSysExts);

View File

@@ -516,4 +516,5 @@ extern BOOL gGLActive;
#ifndef GL_DEPTH24_STENCIL8 #ifndef GL_DEPTH24_STENCIL8
#define GL_DEPTH24_STENCIL8 GL_DEPTH24_STENCIL8_EXT #define GL_DEPTH24_STENCIL8 GL_DEPTH24_STENCIL8_EXT
#endif #endif
#endif // LL_LLGL_H #endif // LL_LLGL_H

View File

@@ -278,7 +278,7 @@ extern PFNGLGENERATEMIPMAPEXTPROC glGenerateMipmapEXT;
# include "GL/glh_extensions.h" # include "GL/glh_extensions.h"
# undef __APPLE__ # undef __APPLE__
#elif LL_LINUX #elif LL_LINUX
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// Linux, MESA headers, but not necessarily assuming MESA runtime. // Linux, MESA headers, but not necessarily assuming MESA runtime.
// quotes so we get libraries/.../GL/ version // quotes so we get libraries/.../GL/ version
@@ -783,6 +783,7 @@ extern PFNGLDEBUGMESSAGECONTROLARBPROC glDebugMessageControlARB;
extern PFNGLDEBUGMESSAGEINSERTARBPROC glDebugMessageInsertARB; extern PFNGLDEBUGMESSAGEINSERTARBPROC glDebugMessageInsertARB;
extern PFNGLDEBUGMESSAGECALLBACKARBPROC glDebugMessageCallbackARB; extern PFNGLDEBUGMESSAGECALLBACKARBPROC glDebugMessageCallbackARB;
extern PFNGLGETDEBUGMESSAGELOGARBPROC glGetDebugMessageLogARB; extern PFNGLGETDEBUGMESSAGELOGARBPROC glGetDebugMessageLogARB;
#elif LL_DARWIN #elif LL_DARWIN
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// LL_DARWIN // LL_DARWIN
@@ -825,6 +826,7 @@ extern void glGenerateMipmapEXT(GLenum target) AVAILABLE_MAC_OS_X_VERSION_10_4_A
#define glGenerateMipmap glGenerateMipmapEXT #define glGenerateMipmap glGenerateMipmapEXT
#define GL_MAX_SAMPLES 0x8D57 #define GL_MAX_SAMPLES 0x8D57
#endif #endif
// GL_ARB_draw_buffers // GL_ARB_draw_buffers
extern void glDrawBuffersARB(GLsizei n, const GLenum* bufs) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER; extern void glDrawBuffersARB(GLsizei n, const GLenum* bufs) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
@@ -997,7 +999,7 @@ extern void glGetBufferPointervARB (GLenum, GLenum, GLvoid* *);
} }
#endif #endif
#include <AGL/gl.h> #include <OpenGL/gl.h>
#endif // LL_MESA / LL_WINDOWS / LL_DARWIN #endif // LL_MESA / LL_WINDOWS / LL_DARWIN
@@ -1029,4 +1031,5 @@ extern void glGetBufferPointervARB (GLenum, GLenum, GLvoid* *);
#define GL_TEXTURE_FREE_MEMORY_ATI 0x87FC #define GL_TEXTURE_FREE_MEMORY_ATI 0x87FC
#define GL_RENDERBUFFER_FREE_MEMORY_ATI 0x87FD #define GL_RENDERBUFFER_FREE_MEMORY_ATI 0x87FD
#endif #endif
#endif // LL_LLGLHEADERS_H #endif // LL_LLGLHEADERS_H

View File

@@ -231,7 +231,6 @@ BOOL LLShaderMgr::attachShaderFeatures(LLGLSLShader * shader)
if (features->hasLighting) if (features->hasLighting)
{ {
if (features->hasWaterFog) if (features->hasWaterFog)
{ {
if (features->disableTextureIndex) if (features->disableTextureIndex)
@@ -308,7 +307,7 @@ BOOL LLShaderMgr::attachShaderFeatures(LLGLSLShader * shader)
} }
shader->mFeatures.mIndexedTextureChannels = llmax(LLGLSLShader::sIndexedTextureChannels-1, 1); shader->mFeatures.mIndexedTextureChannels = llmax(LLGLSLShader::sIndexedTextureChannels-1, 1);
} }
} }
} }
// NOTE order of shader object attaching is VERY IMPORTANT!!! // NOTE order of shader object attaching is VERY IMPORTANT!!!
@@ -571,7 +570,7 @@ GLhandleARB LLShaderMgr::loadShaderFile(const std::string& filename, S32 & shade
return 0; return 0;
} }
//we can't have any lines longer than 1024 characters //we can't have any lines longer than 1024 characters
//or any shaders longer than 4096 lines... deal - DaveP //or any shaders longer than 4096 lines... deal - DaveP
GLcharARB buff[1024]; GLcharARB buff[1024];
GLcharARB* text[4096]; GLcharARB* text[4096];

View File

@@ -45,17 +45,20 @@ class LLMouseHandler
public: public:
LLMouseHandler() {} LLMouseHandler() {}
virtual ~LLMouseHandler() {} virtual ~LLMouseHandler() {}
typedef enum { typedef enum {
SHOW_NEVER, SHOW_NEVER,
SHOW_IF_NOT_BLOCKED, SHOW_IF_NOT_BLOCKED,
SHOW_ALWAYS, SHOW_ALWAYS,
} EShowToolTip; } EShowToolTip;
typedef enum { typedef enum {
CLICK_LEFT, CLICK_LEFT,
CLICK_MIDDLE, CLICK_MIDDLE,
CLICK_RIGHT, CLICK_RIGHT,
CLICK_DOUBLELEFT CLICK_DOUBLELEFT
} EClickType; } EClickType;
virtual BOOL handleAnyMouseClick(S32 x, S32 y, MASK mask, EClickType clicktype, BOOL down); virtual BOOL handleAnyMouseClick(S32 x, S32 y, MASK mask, EClickType clicktype, BOOL down);
virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask) = 0; virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask) = 0;
virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask) = 0; virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask) = 0;

View File

@@ -113,6 +113,7 @@ LLWindow::LLWindow(LLWindowCallbacks* callbacks, BOOL fullscreen, U32 flags)
mSupportedResolutions(NULL), mSupportedResolutions(NULL),
mNumSupportedResolutions(0), mNumSupportedResolutions(0),
mCurrentCursor(UI_CURSOR_ARROW), mCurrentCursor(UI_CURSOR_ARROW),
mNextCursor(UI_CURSOR_ARROW),
mCursorHidden(FALSE), mCursorHidden(FALSE),
mBusyCount(0), mBusyCount(0),
mIsMouseClipping(FALSE), mIsMouseClipping(FALSE),
@@ -125,7 +126,6 @@ LLWindow::LLWindow(LLWindowCallbacks* callbacks, BOOL fullscreen, U32 flags)
LLWindow::~LLWindow() LLWindow::~LLWindow()
{ {
} }
//virtual //virtual
@@ -139,6 +139,7 @@ BOOL LLWindow::canDelete()
{ {
return TRUE; return TRUE;
} }
// virtual // virtual
void LLWindow::incBusyCount() void LLWindow::incBusyCount()
{ {

View File

@@ -104,12 +104,14 @@ public:
virtual S32 getBusyCount() const; virtual S32 getBusyCount() const;
// Sets cursor, may set to arrow+hourglass // Sets cursor, may set to arrow+hourglass
virtual void setCursor(ECursorType cursor) = 0; virtual void setCursor(ECursorType cursor) { mNextCursor = cursor; };
virtual ECursorType getCursor() const; virtual ECursorType getCursor() const;
virtual void updateCursor() = 0;
virtual void captureMouse() = 0; virtual void captureMouse() = 0;
virtual void releaseMouse() = 0; virtual void releaseMouse() = 0;
virtual void setMouseClipping( BOOL b ) = 0; virtual void setMouseClipping( BOOL b ) = 0;
virtual BOOL isClipboardTextAvailable() = 0; virtual BOOL isClipboardTextAvailable() = 0;
virtual BOOL pasteTextFromClipboard(LLWString &dst) = 0; virtual BOOL pasteTextFromClipboard(LLWString &dst) = 0;
virtual BOOL copyTextToClipboard(const LLWString &src) = 0; virtual BOOL copyTextToClipboard(const LLWString &src) = 0;
@@ -196,6 +198,7 @@ protected:
LLWindowResolution* mSupportedResolutions; LLWindowResolution* mSupportedResolutions;
S32 mNumSupportedResolutions; S32 mNumSupportedResolutions;
ECursorType mCurrentCursor; ECursorType mCurrentCursor;
ECursorType mNextCursor;
BOOL mCursorHidden; BOOL mCursorHidden;
S32 mBusyCount; // how deep is the "cursor busy" stack? S32 mBusyCount; // how deep is the "cursor busy" stack?
BOOL mIsMouseClipping; // Is this window currently clipping the mouse BOOL mIsMouseClipping; // Is this window currently clipping the mouse

View File

@@ -91,5 +91,4 @@ public:
}; };
#endif #endif

View File

@@ -61,7 +61,7 @@ public:
/*virtual*/ void showCursorFromMouseMove() {}; /*virtual*/ void showCursorFromMouseMove() {};
/*virtual*/ void hideCursorUntilMouseMove() {}; /*virtual*/ void hideCursorUntilMouseMove() {};
/*virtual*/ BOOL isCursorHidden() {return FALSE;}; /*virtual*/ BOOL isCursorHidden() {return FALSE;};
/*virtual*/ void setCursor(ECursorType cursor) {}; /*virtual*/ void updateCursor() {};
//virtual ECursorType getCursor() { return mCurrentCursor; }; //virtual ECursorType getCursor() { return mCurrentCursor; };
/*virtual*/ void captureMouse() {}; /*virtual*/ void captureMouse() {};
/*virtual*/ void releaseMouse() {}; /*virtual*/ void releaseMouse() {};

View File

@@ -50,6 +50,11 @@ void setupCocoa()
{ {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
// The following prevents the Cocoa command line parser from trying to open 'unknown' arguements as documents.
// ie. running './secondlife -set Language fr' would cause a pop-up saying can't open document 'fr'
// when init'ing the Cocoa App window.
[[NSUserDefaults standardUserDefaults] setObject:@"NO" forKey:@"NSTreatUnknownArgumentsAsOpen"];
// This is a bit of voodoo taken from the Apple sample code "CarbonCocoa_PictureCursor": // This is a bit of voodoo taken from the Apple sample code "CarbonCocoa_PictureCursor":
// http://developer.apple.com/samplecode/CarbonCocoa_PictureCursor/index.html // http://developer.apple.com/samplecode/CarbonCocoa_PictureCursor/index.html
@@ -60,6 +65,8 @@ void setupCocoa()
[[[NSWindow alloc] init] release]; [[[NSWindow alloc] init] release];
[pool release]; [pool release];
inited = true;
} }
} }

View File

@@ -226,10 +226,10 @@ LLWindowMacOSX::LLWindowMacOSX(LLWindowCallbacks* callbacks,
// Route them to a dummy callback structure until the end of constructor. // Route them to a dummy callback structure until the end of constructor.
LLWindowCallbacks null_callbacks; LLWindowCallbacks null_callbacks;
mCallbacks = &null_callbacks; mCallbacks = &null_callbacks;
// Voodoo for calling cocoa from carbon (see llwindowmacosx-objc.mm). // Voodoo for calling cocoa from carbon (see llwindowmacosx-objc.mm).
setupCocoa(); setupCocoa();
// Initialize the keyboard // Initialize the keyboard
gKeyboard = new LLKeyboardMacOSX(); gKeyboard = new LLKeyboardMacOSX();
gKeyboard->setCallbacks(callbacks); gKeyboard->setCallbacks(callbacks);
@@ -260,10 +260,10 @@ LLWindowMacOSX::LLWindowMacOSX(LLWindowCallbacks* callbacks,
mRawKeyEvent = NULL; mRawKeyEvent = NULL;
mFSAASamples = fsaa_samples; mFSAASamples = fsaa_samples;
mForceRebuild = FALSE; mForceRebuild = FALSE;
// For reasons that aren't clear to me, LLTimers seem to be created in the "started" state. // For reasons that aren't clear to me, LLTimers seem to be created in the "started" state.
// Since the started state of this one is used to track whether the NMRec has been installed, it wants to start out in the "stopped" state. // Since the started state of this one is used to track whether the NMRec has been installed, it wants to start out in the "stopped" state.
mBounceTimer.stop(); mBounceTimer.stop();
// Get the original aspect ratio of the main device. // Get the original aspect ratio of the main device.
mOriginalAspectRatio = (double)CGDisplayPixelsWide(mDisplay) / (double)CGDisplayPixelsHigh(mDisplay); mOriginalAspectRatio = (double)CGDisplayPixelsWide(mDisplay) / (double)CGDisplayPixelsHigh(mDisplay);
@@ -276,7 +276,7 @@ LLWindowMacOSX::LLWindowMacOSX(LLWindowCallbacks* callbacks,
mMoveEventCampartorUPP = NewEventComparatorUPP(staticMoveEventComparator); mMoveEventCampartorUPP = NewEventComparatorUPP(staticMoveEventComparator);
mGlobalHandlerRef = NULL; mGlobalHandlerRef = NULL;
mWindowHandlerRef = NULL; mWindowHandlerRef = NULL;
mDragOverrideCursor = -1; mDragOverrideCursor = -1;
// We're not clipping yet // We're not clipping yet
@@ -451,7 +451,7 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits
mFullscreenBits = -1; mFullscreenBits = -1;
mFullscreenRefresh = -1; mFullscreenRefresh = -1;
std::string error= llformat("Unable to run fullscreen at %d x %d.\nRunning in window.", width, height); std::string error= llformat("Unable to run fullscreen at %d x %d.\nRunning in window.", width, height);
OSMessageBox(error, "Error", OSMB_OK); OSMessageBox(error, "Error", OSMB_OK);
} }
} }
@@ -484,7 +484,6 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits
true, true,
(long)this); (long)this);
if (!mWindow) if (!mWindow)
{ {
setupFailure("Window creation error", "Error", OSMB_OK); setupFailure("Window creation error", "Error", OSMB_OK);
@@ -500,7 +499,7 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits
InstallStandardEventHandler(GetWindowEventTarget(mWindow)); InstallStandardEventHandler(GetWindowEventTarget(mWindow));
InstallWindowEventHandler(mWindow, mEventHandlerUPP, GetEventTypeCount (WindowHandlerEventList), WindowHandlerEventList, (void*)this, &mWindowHandlerRef); // add event handler InstallWindowEventHandler(mWindow, mEventHandlerUPP, GetEventTypeCount (WindowHandlerEventList), WindowHandlerEventList, (void*)this, &mWindowHandlerRef); // add event handler
#if LL_OS_DRAGDROP_ENABLED #if LL_OS_DRAGDROP_ENABLED
InstallTrackingHandler( dragTrackingHandler, mWindow, (void*)this ); InstallTrackingHandler( dragTrackingHandler, mWindow, (void*)this );
InstallReceiveHandler( dragReceiveHandler, mWindow, (void*)this ); InstallReceiveHandler( dragReceiveHandler, mWindow, (void*)this );
#endif // LL_OS_DRAGDROP_ENABLED #endif // LL_OS_DRAGDROP_ENABLED
} }
@@ -581,16 +580,16 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits
AGL_NO_RECOVERY, AGL_NO_RECOVERY,
AGL_DOUBLEBUFFER, AGL_DOUBLEBUFFER,
AGL_CLOSEST_POLICY, AGL_CLOSEST_POLICY,
AGL_ACCELERATED, AGL_ACCELERATED,
AGL_SAMPLE_BUFFERS_ARB, mFSAASamples > 0 ? 1 : 0, AGL_SAMPLE_BUFFERS_ARB, mFSAASamples > 0 ? 1 : 0,
AGL_SAMPLES_ARB, mFSAASamples, AGL_SAMPLES_ARB, mFSAASamples,
AGL_RED_SIZE, 8, AGL_RED_SIZE, 8,
AGL_GREEN_SIZE, 8, AGL_GREEN_SIZE, 8,
AGL_BLUE_SIZE, 8, AGL_BLUE_SIZE, 8,
AGL_ALPHA_SIZE, 8, AGL_ALPHA_SIZE, 8,
AGL_DEPTH_SIZE, 24, AGL_DEPTH_SIZE, 24,
AGL_STENCIL_SIZE, 8, AGL_STENCIL_SIZE, 8,
AGL_NONE AGL_NONE
}; };
LL_DEBUGS("Window") << "createContext: creating windowed pixelformat" << LL_ENDL; LL_DEBUGS("Window") << "createContext: creating windowed pixelformat" << LL_ENDL;
@@ -797,7 +796,7 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits
LL_DEBUGS("GLinit") << "Keeping vertical sync" << LL_ENDL; LL_DEBUGS("GLinit") << "Keeping vertical sync" << LL_ENDL;
frames_per_swap = 1; frames_per_swap = 1;
} }
aglSetInteger(mContext, AGL_SWAP_INTERVAL, &frames_per_swap); aglSetInteger(mContext, AGL_SWAP_INTERVAL, &frames_per_swap);
//enable multi-threaded OpenGL //enable multi-threaded OpenGL
if (sUseMultGL) if (sUseMultGL)
@@ -810,7 +809,7 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits
if (cgl_err != kCGLNoError ) if (cgl_err != kCGLNoError )
{ {
LL_DEBUGS("GLInit") << "Multi-threaded OpenGL not available." << LL_ENDL; LL_DEBUGS("GLInit") << "Multi-threaded OpenGL not available." << LL_ENDL;
} }
else else
{ {
LL_DEBUGS("GLInit") << "Multi-threaded OpenGL enabled." << LL_ENDL; LL_DEBUGS("GLInit") << "Multi-threaded OpenGL enabled." << LL_ENDL;
@@ -1042,6 +1041,7 @@ void LLWindowMacOSX::hide()
HideWindow(mWindow); HideWindow(mWindow);
} }
//virtual
void LLWindowMacOSX::minimize() void LLWindowMacOSX::minimize()
{ {
setMouseClipping(FALSE); setMouseClipping(FALSE);
@@ -1049,6 +1049,7 @@ void LLWindowMacOSX::minimize()
CollapseWindow(mWindow, true); CollapseWindow(mWindow, true);
} }
//virtual
void LLWindowMacOSX::restore() void LLWindowMacOSX::restore()
{ {
show(); show();
@@ -1114,7 +1115,7 @@ BOOL LLWindowMacOSX::maximize()
{ {
ZoomWindow(mWindow, inContent, true); ZoomWindow(mWindow, inContent, true);
} }
return mMaximized; return mMaximized;
} }
@@ -1169,6 +1170,8 @@ void LLWindowMacOSX::gatherInput()
} }
} }
updateCursor();
} }
BOOL LLWindowMacOSX::getPosition(LLCoordScreen *position) BOOL LLWindowMacOSX::getPosition(LLCoordScreen *position)
@@ -1437,11 +1440,11 @@ static void fixOrigin(void)
GrafPtr port; GrafPtr port;
Rect portrect; Rect portrect;
::GetPort(&port); ::GetPort(&port);
::GetPortBounds(port, &portrect); ::GetPortBounds(port, &portrect);
if((portrect.left != 0) || (portrect.top != 0)) if((portrect.left != 0) || (portrect.top != 0))
{ {
// Mozilla sometimes changes our port origin. Fuckers. // Mozilla sometimes changes our port origin.
::SetOrigin(0,0); ::SetOrigin(0,0);
} }
} }
@@ -1451,17 +1454,17 @@ BOOL LLWindowMacOSX::getCursorPosition(LLCoordWindow *position)
Point cursor_point; Point cursor_point;
LLCoordScreen screen_pos; LLCoordScreen screen_pos;
GrafPtr save; GrafPtr save;
if(mWindow == NULL) if(mWindow == NULL)
return FALSE; return FALSE;
::GetPort(&save); ::GetPort(&save);
::SetPort(GetWindowPort(mWindow)); ::SetPort(GetWindowPort(mWindow));
fixOrigin(); fixOrigin();
// gets the mouse location in local coordinates // gets the mouse location in local coordinates
::GetMouse(&cursor_point); ::GetMouse(&cursor_point);
// lldebugs << "getCursorPosition(): cursor is at " << cursor_point.h << ", " << cursor_point.v << " port origin: " << portrect.left << ", " << portrect.top << llendl; // lldebugs << "getCursorPosition(): cursor is at " << cursor_point.h << ", " << cursor_point.v << " port origin: " << portrect.left << ", " << portrect.top << llendl;
::SetPort(save); ::SetPort(save);
@@ -1526,7 +1529,7 @@ F32 LLWindowMacOSX::getNativeAspectRatio()
{ {
// The constructor for this class grabs the aspect ratio of the monitor before doing any resolution // The constructor for this class grabs the aspect ratio of the monitor before doing any resolution
// switching, and stashes it in mOriginalAspectRatio. Here, we just return it. // switching, and stashes it in mOriginalAspectRatio. Here, we just return it.
if (mOverrideAspectRatio > 0.f) if (mOverrideAspectRatio > 0.f)
{ {
return mOverrideAspectRatio; return mOverrideAspectRatio;
@@ -2001,7 +2004,7 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
if (mPreeditor if (mPreeditor
&& (result = GetEventParameter(event, kEventParamTextInputSendFixLen, && (result = GetEventParameter(event, kEventParamTextInputSendFixLen,
typeLongInteger, &param_type, sizeof(fix_len), NULL, &fix_len)) == noErr typeLongInteger, &param_type, sizeof(fix_len), NULL, &fix_len)) == noErr
&& typeLongInteger == param_type && typeLongInteger == param_type
&& (result = GetEventParameter(event, kEventParamTextInputSendText, && (result = GetEventParameter(event, kEventParamTextInputSendText,
typeUnicodeText, &param_type, 0, &text_len, NULL)) == noErr typeUnicodeText, &param_type, 0, &text_len, NULL)) == noErr
&& typeUnicodeText == param_type) && typeUnicodeText == param_type)
@@ -2021,7 +2024,7 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
mPreeditor->markAsPreedit(location, length); mPreeditor->markAsPreedit(location, length);
} }
mPreeditor->resetPreedit(); mPreeditor->resetPreedit();
// Receive the text from input method. // Receive the text from input method.
U16 *const text = new U16[text_len / sizeof(U16)]; U16 *const text = new U16[text_len / sizeof(U16)];
GetEventParameter(event, kEventParamTextInputSendText, typeUnicodeText, NULL, text_len, NULL, text); GetEventParameter(event, kEventParamTextInputSendText, typeUnicodeText, NULL, text_len, NULL, text);
@@ -2060,11 +2063,11 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
GetEventParameter(event, kEventParamTextInputSendHiliteRng, typeTextRangeArray, GetEventParameter(event, kEventParamTextInputSendHiliteRng, typeTextRangeArray,
NULL, text_range_array_size, NULL, text_range_array); NULL, text_range_array_size, NULL, text_range_array);
// WARNING: We assume ranges are in ascending order, // WARNING: We assume ranges are in ascending order,
// although the condition is undocumented. It seems // although the condition is undocumented. It seems
// OK to assume this. I also assumed // OK to assume this. I also assumed
// the ranges are contiguous in previous versions, but I // the ranges are contiguous in previous versions, but I
// have heard a rumore that older versions os ATOK may // have heard a rumore that older versions os ATOK may
// return ranges with some _gap_. I don't know whether // return ranges with some _gap_. I don't know whether
// it is true, but I'm preparing my code for the case. // it is true, but I'm preparing my code for the case.
@@ -2128,15 +2131,16 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
} }
} }
break; break;
case kEventTextInputUnicodeForKeyEvent: case kEventTextInputUnicodeForKeyEvent:
{ {
UInt32 modifiers = 0; UInt32 modifiers = 0;
// First, process the raw event. // First, process the raw event.
{ {
EventRef rawEvent = NULL; EventRef rawEvent = NULL;
// Get the original event and extract the modifier keys, so we can ignore command-key events. // Get the original event and extract the modifier keys, so we can ignore command-key events.
if (GetEventParameter(event, kEventParamTextInputSendKeyboardEvent, typeEventRef, NULL, sizeof(rawEvent), NULL, &rawEvent) == noErr) if (GetEventParameter(event, kEventParamTextInputSendKeyboardEvent, typeEventRef, NULL, sizeof(rawEvent), NULL, &rawEvent) == noErr)
{ {
@@ -2145,7 +2149,7 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
// and call this function recursively to handle the raw key event. // and call this function recursively to handle the raw key event.
eventHandler (myHandler, rawEvent); eventHandler (myHandler, rawEvent);
// save the raw event until we're done processing the unicode input as well. // save the raw event until we're done processing the unicode input as well.
mRawKeyEvent = rawEvent; mRawKeyEvent = rawEvent;
} }
@@ -2176,7 +2180,7 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
else else
{ {
MASK mask = LLWindowMacOSX::modifiersToMask(modifiers); MASK mask = LLWindowMacOSX::modifiersToMask(modifiers);
llassert( actualType == typeUnicodeText ); llassert( actualType == typeUnicodeText );
// The result is a UTF16 buffer. Pass the characters in turn to handleUnicodeChar. // The result is a UTF16 buffer. Pass the characters in turn to handleUnicodeChar.
@@ -2202,7 +2206,7 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
result = err; result = err;
} }
break; break;
case kEventTextInputOffsetToPos: case kEventTextInputOffsetToPos:
{ {
EventParamType param_type; EventParamType param_type;
@@ -2215,7 +2219,7 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
S32 preedit, preedit_length; S32 preedit, preedit_length;
mPreeditor->getPreeditRange(&preedit, &preedit_length); mPreeditor->getPreeditRange(&preedit, &preedit_length);
const LLWString & text = mPreeditor->getPreeditString(); const LLWString & text = mPreeditor->getPreeditString();
LLCoordGL caret_coord; LLCoordGL caret_coord;
LLRect preedit_bounds; LLRect preedit_bounds;
if (0 <= offset if (0 <= offset
@@ -2229,10 +2233,10 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
qd_point.h = caret_base_coord_screen.mX; qd_point.h = caret_base_coord_screen.mX;
qd_point.v = caret_base_coord_screen.mY; qd_point.v = caret_base_coord_screen.mY;
SetEventParameter(event, kEventParamTextInputReplyPoint, typeQDPoint, sizeof(qd_point), &qd_point); SetEventParameter(event, kEventParamTextInputReplyPoint, typeQDPoint, sizeof(qd_point), &qd_point);
short line_height = (short) preedit_bounds.getHeight(); short line_height = (short) preedit_bounds.getHeight();
SetEventParameter(event, kEventParamTextInputReplyLineHeight, typeShortInteger, sizeof(line_height), &line_height); SetEventParameter(event, kEventParamTextInputReplyLineHeight, typeShortInteger, sizeof(line_height), &line_height);
result = noErr; result = noErr;
} }
else else
@@ -2285,7 +2289,7 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
case kEventRawKeyRepeat: case kEventRawKeyRepeat:
if (gDebugWindowProc) if (gDebugWindowProc)
{ {
printf("key down, key code = 0x%08x, char code = 0x%02x (%c), modifiers = 0x%08x\n", printf("key down, key code = 0x%08x, char code = 0x%02x (%c), modifiers = 0x%08x\n",
(unsigned int)keyCode, charCode, (char)charCode, (unsigned int)modifiers); (unsigned int)keyCode, charCode, (char)charCode, (unsigned int)modifiers);
fflush(stdout); fflush(stdout);
} }
@@ -2296,7 +2300,7 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
case kEventRawKeyUp: case kEventRawKeyUp:
if (gDebugWindowProc) if (gDebugWindowProc)
{ {
printf("key up, key code = 0x%08x, char code = 0x%02x (%c), modifiers = 0x%08x\n", printf("key up, key code = 0x%08x, char code = 0x%02x (%c), modifiers = 0x%08x\n",
(unsigned int)keyCode, charCode, (char)charCode, (unsigned int)modifiers); (unsigned int)keyCode, charCode, (char)charCode, (unsigned int)modifiers);
fflush(stdout); fflush(stdout);
} }
@@ -2354,7 +2358,7 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
} }
// When the state of the 'Fn' key (the one that changes some of the mappings on a powerbook/macbook keyboard // When the state of the 'Fn' key (the one that changes some of the mappings on a powerbook/macbook keyboard
// to an embedded keypad) changes, it may subsequently cause a key up event to be lost, which may lead to // to an embedded keypad) changes, it may subsequently cause a key up event to be lost, which may lead to
// a movement key getting "stuck" down. This is bad. // a movement key getting "stuck" down. This is bad.
// This is an OS bug -- even the GetKeys() API doesn't tell you the key has been released. // This is an OS bug -- even the GetKeys() API doesn't tell you the key has been released.
// This workaround causes all held-down keys to be reset whenever the state of the Fn key changes. This isn't // This workaround causes all held-down keys to be reset whenever the state of the Fn key changes. This isn't
@@ -2364,14 +2368,14 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
if (gDebugWindowProc) printf("Fn key state change event\n"); if (gDebugWindowProc) printf("Fn key state change event\n");
gKeyboard->resetKeys(); gKeyboard->resetKeys();
} }
if (gDebugWindowProc) fflush(stdout); if (gDebugWindowProc) fflush(stdout);
mLastModifiers = modifiers; mLastModifiers = modifiers;
result = eventNotHandledErr; result = eventNotHandledErr;
break; break;
} }
mRawKeyEvent = NULL; mRawKeyEvent = NULL;
} }
break; break;
@@ -2466,7 +2470,7 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
case kEventMouseButtonSecondary: case kEventMouseButtonSecondary:
mCallbacks->handleRightMouseDown(this, outCoords, mask); mCallbacks->handleRightMouseDown(this, outCoords, mask);
break; break;
case kEventMouseButtonTertiary: case kEventMouseButtonTertiary:
mCallbacks->handleMiddleMouseDown(this, outCoords, mask); mCallbacks->handleMiddleMouseDown(this, outCoords, mask);
break; break;
@@ -2528,7 +2532,7 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
case kEventClassWindow: case kEventClassWindow:
switch(evtKind) switch(evtKind)
{ {
case kEventWindowActivated: case kEventWindowActivated:
if (mTSMDocument) if (mTSMDocument)
{ {
@@ -2543,7 +2547,7 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
} }
mCallbacks->handleFocusLost(this); mCallbacks->handleFocusLost(this);
break; break;
case kEventWindowBoundsChanging: case kEventWindowBoundsChanging:
{ {
// This is where we would constrain move/resize to a particular screen // This is where we would constrain move/resize to a particular screen
@@ -2553,7 +2557,7 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
GetEventParameter(event, kEventParamCurrentBounds, typeQDRectangle, NULL, sizeof(Rect), NULL, &currentBounds); GetEventParameter(event, kEventParamCurrentBounds, typeQDRectangle, NULL, sizeof(Rect), NULL, &currentBounds);
GetEventParameter(event, kEventParamPreviousBounds, typeQDRectangle, NULL, sizeof(Rect), NULL, &previousBounds); GetEventParameter(event, kEventParamPreviousBounds, typeQDRectangle, NULL, sizeof(Rect), NULL, &previousBounds);
// Put an offset into window un-maximize operation since the kEventWindowGetIdealSize // Put an offset into window un-maximize operation since the kEventWindowGetIdealSize
// event only allows the specification of size and not position. // event only allows the specification of size and not position.
if (mMaximized) if (mMaximized)
@@ -2561,7 +2565,7 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
short leftOffset = mPreviousWindowRect.left - currentBounds.left; short leftOffset = mPreviousWindowRect.left - currentBounds.left;
currentBounds.left += leftOffset; currentBounds.left += leftOffset;
currentBounds.right += leftOffset; currentBounds.right += leftOffset;
short topOffset = mPreviousWindowRect.top - currentBounds.top; short topOffset = mPreviousWindowRect.top - currentBounds.top;
currentBounds.top += topOffset; currentBounds.top += topOffset;
currentBounds.bottom += topOffset; currentBounds.bottom += topOffset;
@@ -2581,7 +2585,7 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
{ {
currentBounds.bottom = currentBounds.top + MIN_WINDOW_HEIGHT; currentBounds.bottom = currentBounds.top + MIN_WINDOW_HEIGHT;
} }
SetEventParameter(event, kEventParamCurrentBounds, typeQDRectangle, sizeof(Rect), &currentBounds); SetEventParameter(event, kEventParamCurrentBounds, typeQDRectangle, sizeof(Rect), &currentBounds);
result = noErr; result = noErr;
} }
@@ -2592,38 +2596,38 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
// Get new window bounds // Get new window bounds
Rect newBounds; Rect newBounds;
GetEventParameter(event, kEventParamCurrentBounds, typeQDRectangle, NULL, sizeof(Rect), NULL, &newBounds); GetEventParameter(event, kEventParamCurrentBounds, typeQDRectangle, NULL, sizeof(Rect), NULL, &newBounds);
// Get previous window bounds // Get previous window bounds
Rect oldBounds; Rect oldBounds;
GetEventParameter(event, kEventParamPreviousBounds, typeQDRectangle, NULL, sizeof(Rect), NULL, &oldBounds); GetEventParameter(event, kEventParamPreviousBounds, typeQDRectangle, NULL, sizeof(Rect), NULL, &oldBounds);
// Determine if the new size is larger than the old // Determine if the new size is larger than the old
bool newBoundsLarger = ((newBounds.right - newBounds.left) >= (oldBounds.right - oldBounds.left)); bool newBoundsLarger = ((newBounds.right - newBounds.left) >= (oldBounds.right - oldBounds.left));
newBoundsLarger &= ((newBounds.bottom - newBounds.top) >= (oldBounds.bottom - oldBounds.top)); newBoundsLarger &= ((newBounds.bottom - newBounds.top) >= (oldBounds.bottom - oldBounds.top));
// Check to see if this is a zoom event (+ button on window pane) // Check to see if this is a zoom event (+ button on window pane)
unsigned int eventParams; unsigned int eventParams;
GetEventParameter(event, kEventParamAttributes, typeUInt32, NULL, sizeof(int), NULL, &eventParams); GetEventParameter(event, kEventParamAttributes, typeUInt32, NULL, sizeof(int), NULL, &eventParams);
bool isZoomEvent = ((eventParams & kWindowBoundsChangeZoom) != 0); bool isZoomEvent = ((eventParams & kWindowBoundsChangeZoom) != 0);
// Maximized flag is if zoom event and increasing window size // Maximized flag is if zoom event and increasing window size
mMaximized = (isZoomEvent && newBoundsLarger); mMaximized = (isZoomEvent && newBoundsLarger);
aglUpdateContext(mContext); aglUpdateContext(mContext);
mCallbacks->handleResize(this, newBounds.right - newBounds.left, newBounds.bottom - newBounds.top); mCallbacks->handleResize(this, newBounds.right - newBounds.left, newBounds.bottom - newBounds.top);
} }
break; break;
case kEventWindowGetIdealSize: case kEventWindowGetIdealSize:
// Only recommend a new ideal size when un-maximizing // Only recommend a new ideal size when un-maximizing
if (mMaximized == TRUE) if (mMaximized == TRUE)
{ {
Point nonMaximizedSize; Point nonMaximizedSize;
nonMaximizedSize.v = mPreviousWindowRect.bottom - mPreviousWindowRect.top; nonMaximizedSize.v = mPreviousWindowRect.bottom - mPreviousWindowRect.top;
nonMaximizedSize.h = mPreviousWindowRect.right - mPreviousWindowRect.left; nonMaximizedSize.h = mPreviousWindowRect.right - mPreviousWindowRect.left;
SetEventParameter(event, kEventParamDimensions, typeQDPoint, sizeof(Point), &nonMaximizedSize); SetEventParameter(event, kEventParamDimensions, typeQDPoint, sizeof(Point), &nonMaximizedSize);
result = noErr; result = noErr;
} }
@@ -2678,7 +2682,7 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
if (mPreeditor) if (mPreeditor)
{ {
switch(evtKind) switch(evtKind)
{ {
case kEventTSMDocumentAccessGetLength: case kEventTSMDocumentAccessGetLength:
{ {
@@ -2697,14 +2701,14 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
{ {
// Return the selected range, excluding preedit. // Return the selected range, excluding preedit.
// In our preeditor, preedit and selection are exclusive, so, // In our preeditor, preedit and selection are exclusive, so,
// when it has a preedit, there is no selection and the // when it has a preedit, there is no selection and the
// insertion point is on the preedit that corrupses into the // insertion point is on the preedit that corrupses into the
// beginning of the preedit when the preedit was removed. // beginning of the preedit when the preedit was removed.
S32 preedit, preedit_length; S32 preedit, preedit_length;
mPreeditor->getPreeditRange(&preedit, &preedit_length); mPreeditor->getPreeditRange(&preedit, &preedit_length);
const LLWString & text = mPreeditor->getPreeditString(); const LLWString & text = mPreeditor->getPreeditString();
CFRange range; CFRange range;
if (preedit_length) if (preedit_length)
{ {
@@ -2768,7 +2772,7 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
memcpy(target_pointer, text_utf16.c_str() + range.location, range.length * sizeof(UniChar)); memcpy(target_pointer, text_utf16.c_str() + range.location, range.length * sizeof(UniChar));
// Note that result has already been set above. // Note that result has already been set above.
} }
} }
break; break;
@@ -2815,7 +2819,7 @@ const char* cursorIDToName(int id)
case UI_CURSOR_TOOLPLAY: return "UI_CURSOR_TOOLPLAY"; case UI_CURSOR_TOOLPLAY: return "UI_CURSOR_TOOLPLAY";
case UI_CURSOR_TOOLPAUSE: return "UI_CURSOR_TOOLPAUSE"; case UI_CURSOR_TOOLPAUSE: return "UI_CURSOR_TOOLPAUSE";
case UI_CURSOR_TOOLMEDIAOPEN: return "UI_CURSOR_TOOLMEDIAOPEN"; case UI_CURSOR_TOOLMEDIAOPEN: return "UI_CURSOR_TOOLMEDIAOPEN";
case UI_CURSOR_PIPETTE: return "UI_CURSOR_PIPETTE"; case UI_CURSOR_PIPETTE: return "UI_CURSOR_PIPETTE";
case UI_CURSOR_TOOLSIT: return "UI_CURSOR_TOOLSIT"; case UI_CURSOR_TOOLSIT: return "UI_CURSOR_TOOLSIT";
case UI_CURSOR_TOOLBUY: return "UI_CURSOR_TOOLBUY"; case UI_CURSOR_TOOLBUY: return "UI_CURSOR_TOOLBUY";
case UI_CURSOR_TOOLOPEN: return "UI_CURSOR_TOOLOPEN"; case UI_CURSOR_TOOLOPEN: return "UI_CURSOR_TOOLOPEN";
@@ -2823,7 +2827,7 @@ const char* cursorIDToName(int id)
} }
llerrs << "cursorIDToName: unknown cursor id" << id << llendl; llerrs << "cursorIDToName: unknown cursor id" << id << llendl;
return "UI_CURSOR_ARROW"; return "UI_CURSOR_ARROW";
} }
@@ -2839,42 +2843,42 @@ static void initPixmapCursor(int cursorid, int hotspotX, int hotspotY)
fullpath += gDirUtilp->getDirDelimiter(); fullpath += gDirUtilp->getDirDelimiter();
fullpath += cursorIDToName(cursorid); fullpath += cursorIDToName(cursorid);
fullpath += ".tif"; fullpath += ".tif";
gCursors[cursorid] = createImageCursor(fullpath.c_str(), hotspotX, hotspotY); gCursors[cursorid] = createImageCursor(fullpath.c_str(), hotspotX, hotspotY);
} }
void LLWindowMacOSX::setCursor(ECursorType cursor) void LLWindowMacOSX::updateCursor()
{ {
OSStatus result = noErr; OSStatus result = noErr;
if (mDragOverrideCursor != -1) if (mDragOverrideCursor != -1)
{ {
// A drag is in progress...remember the requested cursor and we'll // A drag is in progress...remember the requested cursor and we'll
// restore it when it is done // restore it when it is done
mCurrentCursor = cursor; mCurrentCursor = mNextCursor;
return; return;
} }
if (cursor == UI_CURSOR_ARROW if (mNextCursor == UI_CURSOR_ARROW
&& mBusyCount > 0) && mBusyCount > 0)
{ {
cursor = UI_CURSOR_WORKING; mNextCursor = UI_CURSOR_WORKING;
} }
if(mCurrentCursor == cursor) if(mCurrentCursor == mNextCursor)
return; return;
// RN: replace multi-drag cursors with single versions // RN: replace multi-drag cursors with single versions
if (cursor == UI_CURSOR_ARROWDRAGMULTI) if (mNextCursor == UI_CURSOR_ARROWDRAGMULTI)
{ {
cursor = UI_CURSOR_ARROWDRAG; mNextCursor = UI_CURSOR_ARROWDRAG;
} }
else if (cursor == UI_CURSOR_ARROWCOPYMULTI) else if (mNextCursor == UI_CURSOR_ARROWCOPYMULTI)
{ {
cursor = UI_CURSOR_ARROWCOPY; mNextCursor = UI_CURSOR_ARROWCOPY;
} }
switch(cursor) switch(mNextCursor)
{ {
default: default:
case UI_CURSOR_ARROW: case UI_CURSOR_ARROW:
@@ -2926,7 +2930,7 @@ void LLWindowMacOSX::setCursor(ECursorType cursor)
case UI_CURSOR_TOOLBUY: case UI_CURSOR_TOOLBUY:
case UI_CURSOR_TOOLOPEN: case UI_CURSOR_TOOLOPEN:
case UI_CURSOR_TOOLPAY: case UI_CURSOR_TOOLPAY:
result = setImageCursor(gCursors[cursor]); result = setImageCursor(gCursors[mNextCursor]);
break; break;
} }
@@ -2936,7 +2940,7 @@ void LLWindowMacOSX::setCursor(ECursorType cursor)
InitCursor(); InitCursor();
} }
mCurrentCursor = cursor; mCurrentCursor = mNextCursor;
} }
ECursorType LLWindowMacOSX::getCursor() const ECursorType LLWindowMacOSX::getCursor() const
@@ -2967,9 +2971,9 @@ void LLWindowMacOSX::initCursors()
initPixmapCursor(UI_CURSOR_TOOLPLAY, 1, 1); initPixmapCursor(UI_CURSOR_TOOLPLAY, 1, 1);
initPixmapCursor(UI_CURSOR_TOOLPAUSE, 1, 1); initPixmapCursor(UI_CURSOR_TOOLPAUSE, 1, 1);
initPixmapCursor(UI_CURSOR_TOOLMEDIAOPEN, 1, 1); initPixmapCursor(UI_CURSOR_TOOLMEDIAOPEN, 1, 1);
initPixmapCursor(UI_CURSOR_TOOLSIT, 1, 1); initPixmapCursor(UI_CURSOR_TOOLSIT, 20, 15);
initPixmapCursor(UI_CURSOR_TOOLBUY, 1, 1); initPixmapCursor(UI_CURSOR_TOOLBUY, 20, 15);
initPixmapCursor(UI_CURSOR_TOOLOPEN, 1, 1); initPixmapCursor(UI_CURSOR_TOOLOPEN, 20, 15);
initPixmapCursor(UI_CURSOR_TOOLPAY, 1, 1); initPixmapCursor(UI_CURSOR_TOOLPAY, 1, 1);
initPixmapCursor(UI_CURSOR_SIZENWSE, 10, 10); initPixmapCursor(UI_CURSOR_SIZENWSE, 10, 10);
@@ -3281,14 +3285,14 @@ void LLWindowMacOSX::setTitle(const std::string &title)
LLSD LLWindowMacOSX::getNativeKeyData() LLSD LLWindowMacOSX::getNativeKeyData()
{ {
LLSD result = LLSD::emptyMap(); LLSD result = LLSD::emptyMap();
if(mRawKeyEvent) if(mRawKeyEvent)
{ {
char char_code = 0; char char_code = 0;
UInt32 key_code = 0; UInt32 key_code = 0;
UInt32 modifiers = 0; UInt32 modifiers = 0;
UInt32 keyboard_type = 0; UInt32 keyboard_type = 0;
GetEventParameter (mRawKeyEvent, kEventParamKeyMacCharCodes, typeChar, NULL, sizeof(char), NULL, &char_code); GetEventParameter (mRawKeyEvent, kEventParamKeyMacCharCodes, typeChar, NULL, sizeof(char), NULL, &char_code);
GetEventParameter (mRawKeyEvent, kEventParamKeyCode, typeUInt32, NULL, sizeof(UInt32), NULL, &key_code); GetEventParameter (mRawKeyEvent, kEventParamKeyCode, typeUInt32, NULL, sizeof(UInt32), NULL, &key_code);
GetEventParameter (mRawKeyEvent, kEventParamKeyModifiers, typeUInt32, NULL, sizeof(UInt32), NULL, &modifiers); GetEventParameter (mRawKeyEvent, kEventParamKeyModifiers, typeUInt32, NULL, sizeof(UInt32), NULL, &modifiers);
@@ -3298,7 +3302,7 @@ LLSD LLWindowMacOSX::getNativeKeyData()
result["key_code"] = (S32)key_code; result["key_code"] = (S32)key_code;
result["modifiers"] = (S32)modifiers; result["modifiers"] = (S32)modifiers;
result["keyboard_type"] = (S32)keyboard_type; result["keyboard_type"] = (S32)keyboard_type;
#if 0 #if 0
// This causes trouble for control characters -- apparently character codes less than 32 (escape, control-A, etc) // This causes trouble for control characters -- apparently character codes less than 32 (escape, control-A, etc)
// cause llsd serialization to create XML that the llsd deserializer won't parse! // cause llsd serialization to create XML that the llsd deserializer won't parse!
@@ -3307,7 +3311,7 @@ LLSD LLWindowMacOSX::getNativeKeyData()
EventParamType actualType = typeUTF8Text; EventParamType actualType = typeUTF8Text;
UInt32 actualSize = 0; UInt32 actualSize = 0;
char *buffer = NULL; char *buffer = NULL;
err = GetEventParameter (mRawKeyEvent, kEventParamKeyUnicodes, typeUTF8Text, &actualType, 0, &actualSize, NULL); err = GetEventParameter (mRawKeyEvent, kEventParamKeyUnicodes, typeUTF8Text, &actualType, 0, &actualSize, NULL);
if(err == noErr) if(err == noErr)
{ {
@@ -3320,7 +3324,7 @@ LLSD LLWindowMacOSX::getNativeKeyData()
} }
delete[] buffer; delete[] buffer;
} }
result["unicode"] = unicode; result["unicode"] = unicode;
#endif #endif
@@ -3328,7 +3332,7 @@ LLSD LLWindowMacOSX::getNativeKeyData()
lldebugs << "native key data is: " << result << llendl; lldebugs << "native key data is: " << result << llendl;
return result; return result;
} }
@@ -3375,17 +3379,17 @@ void *LLWindowMacOSX::getPlatformWindow()
void *LLWindowMacOSX::getMediaWindow() void *LLWindowMacOSX::getMediaWindow()
{ {
/* /*
Mozilla needs to be initialized with a WindowRef to function properly. Mozilla needs to be initialized with a WindowRef to function properly.
(There's no good reason for this, since it shouldn't be interacting with our window in any way, but that's another issue.) (There's no good reason for this, since it shouldn't be interacting with our window in any way, but that's another issue.)
If we're in windowed mode, we _could_ hand it our actual window pointer, but a subsequent switch to fullscreen will destroy that window, If we're in windowed mode, we _could_ hand it our actual window pointer, but a subsequent switch to fullscreen will destroy that window,
which trips up Mozilla. which trips up Mozilla.
Instead of using our actual window, we create an invisible window which will persist for the lifetime of the application and pass that to Mozilla. Instead of using our actual window, we create an invisible window which will persist for the lifetime of the application and pass that to Mozilla.
This satisfies its deep-seated need to latch onto a WindowRef and solves the issue with switching between fullscreen and windowed modes. This satisfies its deep-seated need to latch onto a WindowRef and solves the issue with switching between fullscreen and windowed modes.
Note that we will never destroy this window (by design!), but since only one will ever be created per run of the application, that's okay. Note that we will never destroy this window (by design!), but since only one will ever be created per run of the application, that's okay.
*/ */
if(sMediaWindow == NULL) if(sMediaWindow == NULL)
{ {
Rect window_rect = {100, 100, 200, 200}; Rect window_rect = {100, 100, 200, 200};
@@ -3394,13 +3398,13 @@ void *LLWindowMacOSX::getMediaWindow()
NULL, NULL,
&window_rect, &window_rect,
(ConstStr255Param) "\p", (ConstStr255Param) "\p",
false, // Create the window invisible. false, // Create the window invisible.
zoomDocProc, // Window with a grow box and a zoom box zoomDocProc, // Window with a grow box and a zoom box
kLastWindowOfClass, // create it behind other windows kLastWindowOfClass, // create it behind other windows
false, // no close box false, // no close box
0); 0);
} }
return (void*)sMediaWindow; return (void*)sMediaWindow;
} }
@@ -3450,7 +3454,7 @@ void LLWindowMacOSX::allowLanguageTextInput(LLPreeditor *preeditor, BOOL b)
} }
UseInputWindow(mTSMDocument, !b); UseInputWindow(mTSMDocument, !b);
// Take care of old and new preeditors. // Take care of old and new preeditors.
if (preeditor != mPreeditor || !b) if (preeditor != mPreeditor || !b)
{ {
@@ -3469,7 +3473,7 @@ void LLWindowMacOSX::allowLanguageTextInput(LLPreeditor *preeditor, BOOL b)
return; return;
} }
mLanguageTextInputAllowed = b; mLanguageTextInputAllowed = b;
if (b) if (b)
{ {
if (mTSMScriptCode != smRoman) if (mTSMScriptCode != smRoman)
@@ -3518,7 +3522,7 @@ MASK LLWindowMacOSX::modifiersToMask(SInt16 modifiers)
if(modifiers & (cmdKey | controlKey)) { mask |= MASK_CONTROL; } if(modifiers & (cmdKey | controlKey)) { mask |= MASK_CONTROL; }
if(modifiers & optionKey) { mask |= MASK_ALT; } if(modifiers & optionKey) { mask |= MASK_ALT; }
return mask; return mask;
} }
#if LL_OS_DRAGDROP_ENABLED #if LL_OS_DRAGDROP_ENABLED
@@ -3529,53 +3533,53 @@ OSErr LLWindowMacOSX::dragTrackingHandler(DragTrackingMessage message, WindowRef
LLWindowMacOSX *self = (LLWindowMacOSX*)handlerRefCon; LLWindowMacOSX *self = (LLWindowMacOSX*)handlerRefCon;
lldebugs << "drag tracking handler, message = " << message << llendl; lldebugs << "drag tracking handler, message = " << message << llendl;
switch(message) switch(message)
{ {
case kDragTrackingInWindow: case kDragTrackingInWindow:
result = self->handleDragNDrop(drag, LLWindowCallbacks::DNDA_TRACK); result = self->handleDragNDrop(drag, LLWindowCallbacks::DNDA_TRACK);
break; break;
case kDragTrackingEnterHandler: case kDragTrackingEnterHandler:
result = self->handleDragNDrop(drag, LLWindowCallbacks::DNDA_START_TRACKING); result = self->handleDragNDrop(drag, LLWindowCallbacks::DNDA_START_TRACKING);
break; break;
case kDragTrackingLeaveHandler: case kDragTrackingLeaveHandler:
result = self->handleDragNDrop(drag, LLWindowCallbacks::DNDA_STOP_TRACKING); result = self->handleDragNDrop(drag, LLWindowCallbacks::DNDA_STOP_TRACKING);
break; break;
default: default:
break; break;
} }
return result; return result;
} }
OSErr LLWindowMacOSX::dragReceiveHandler(WindowRef theWindow, void * handlerRefCon, OSErr LLWindowMacOSX::dragReceiveHandler(WindowRef theWindow, void * handlerRefCon,
DragRef drag) DragRef drag)
{ {
LLWindowMacOSX *self = (LLWindowMacOSX*)handlerRefCon; LLWindowMacOSX *self = (LLWindowMacOSX*)handlerRefCon;
return self->handleDragNDrop(drag, LLWindowCallbacks::DNDA_DROPPED); return self->handleDragNDrop(drag, LLWindowCallbacks::DNDA_DROPPED);
} }
OSErr LLWindowMacOSX::handleDragNDrop(DragRef drag, LLWindowCallbacks::DragNDropAction action) OSErr LLWindowMacOSX::handleDragNDrop(DragRef drag, LLWindowCallbacks::DragNDropAction action)
{ {
OSErr result = dragNotAcceptedErr; // overall function result OSErr result = dragNotAcceptedErr; // overall function result
OSErr err = noErr; // for local error handling OSErr err = noErr; // for local error handling
// Get the mouse position and modifiers of this drag. // Get the mouse position and modifiers of this drag.
SInt16 modifiers, mouseDownModifiers, mouseUpModifiers; SInt16 modifiers, mouseDownModifiers, mouseUpModifiers;
::GetDragModifiers(drag, &modifiers, &mouseDownModifiers, &mouseUpModifiers); ::GetDragModifiers(drag, &modifiers, &mouseDownModifiers, &mouseUpModifiers);
MASK mask = LLWindowMacOSX::modifiersToMask(modifiers); MASK mask = LLWindowMacOSX::modifiersToMask(modifiers);
Point mouse_point; Point mouse_point;
// This will return the mouse point in global screen coords // This will return the mouse point in global screen coords
::GetDragMouse(drag, &mouse_point, NULL); ::GetDragMouse(drag, &mouse_point, NULL);
LLCoordScreen screen_coords(mouse_point.h, mouse_point.v); LLCoordScreen screen_coords(mouse_point.h, mouse_point.v);
LLCoordGL gl_pos; LLCoordGL gl_pos;
convertCoords(screen_coords, &gl_pos); convertCoords(screen_coords, &gl_pos);
// Look at the pasteboard and try to extract an URL from it // Look at the pasteboard and try to extract an URL from it
PasteboardRef pasteboard; PasteboardRef pasteboard;
if(GetDragPasteboard(drag, &pasteboard) == noErr) if(GetDragPasteboard(drag, &pasteboard) == noErr)
@@ -3583,22 +3587,22 @@ OSErr LLWindowMacOSX::handleDragNDrop(DragRef drag, LLWindowCallbacks::DragNDrop
ItemCount num_items = 0; ItemCount num_items = 0;
// Treat an error here as an item count of 0 // Treat an error here as an item count of 0
(void)PasteboardGetItemCount(pasteboard, &num_items); (void)PasteboardGetItemCount(pasteboard, &num_items);
// Only deal with single-item drags. // Only deal with single-item drags.
if(num_items == 1) if(num_items == 1)
{ {
PasteboardItemID item_id = NULL; PasteboardItemID item_id = NULL;
CFArrayRef flavors = NULL; CFArrayRef flavors = NULL;
CFDataRef data = NULL; CFDataRef data = NULL;
err = PasteboardGetItemIdentifier(pasteboard, 1, &item_id); // Yes, this really is 1-based. err = PasteboardGetItemIdentifier(pasteboard, 1, &item_id); // Yes, this really is 1-based.
// Try to extract an URL from the pasteboard // Try to extract an URL from the pasteboard
if(err == noErr) if(err == noErr)
{ {
err = PasteboardCopyItemFlavors( pasteboard, item_id, &flavors); err = PasteboardCopyItemFlavors( pasteboard, item_id, &flavors);
} }
if(err == noErr) if(err == noErr)
{ {
if(CFArrayContainsValue(flavors, CFRangeMake(0, CFArrayGetCount(flavors)), kUTTypeURL)) if(CFArrayContainsValue(flavors, CFRangeMake(0, CFArrayGetCount(flavors)), kUTTypeURL))
@@ -3611,9 +3615,9 @@ OSErr LLWindowMacOSX::handleDragNDrop(DragRef drag, LLWindowCallbacks::DragNDrop
// This is a string that might be an URL. // This is a string that might be an URL.
err = PasteboardCopyItemFlavorData(pasteboard, item_id, kUTTypeUTF8PlainText, &data); err = PasteboardCopyItemFlavorData(pasteboard, item_id, kUTTypeUTF8PlainText, &data);
} }
} }
if(flavors != NULL) if(flavors != NULL)
{ {
CFRelease(flavors); CFRelease(flavors);
@@ -3624,12 +3628,12 @@ OSErr LLWindowMacOSX::handleDragNDrop(DragRef drag, LLWindowCallbacks::DragNDrop
std::string url; std::string url;
url.assign((char*)CFDataGetBytePtr(data), CFDataGetLength(data)); url.assign((char*)CFDataGetBytePtr(data), CFDataGetLength(data));
CFRelease(data); CFRelease(data);
if(!url.empty()) if(!url.empty())
{ {
LLWindowCallbacks::DragNDropResult res = LLWindowCallbacks::DragNDropResult res =
mCallbacks->handleDragNDrop(this, gl_pos, mask, action, url); mCallbacks->handleDragNDrop(this, gl_pos, mask, action, url);
switch (res) { switch (res) {
case LLWindowCallbacks::DND_NONE: // No drop allowed case LLWindowCallbacks::DND_NONE: // No drop allowed
if (action == LLWindowCallbacks::DNDA_TRACK) if (action == LLWindowCallbacks::DNDA_TRACK)
@@ -3664,7 +3668,7 @@ OSErr LLWindowMacOSX::handleDragNDrop(DragRef drag, LLWindowCallbacks::DragNDrop
// Restore the cursor // Restore the cursor
ECursorType temp_cursor = mCurrentCursor; ECursorType temp_cursor = mCurrentCursor;
// get around the "setting the same cursor" code in setCursor() // get around the "setting the same cursor" code in setCursor()
mCurrentCursor = UI_CURSOR_COUNT; mCurrentCursor = UI_CURSOR_COUNT;
setCursor(temp_cursor); setCursor(temp_cursor);
} }
else { else {
@@ -3676,7 +3680,7 @@ OSErr LLWindowMacOSX::handleDragNDrop(DragRef drag, LLWindowCallbacks::DragNDrop
} }
} }
} }
return result; return result;
} }

View File

@@ -73,7 +73,7 @@ public:
/*virtual*/ void showCursorFromMouseMove(); /*virtual*/ void showCursorFromMouseMove();
/*virtual*/ void hideCursorUntilMouseMove(); /*virtual*/ void hideCursorUntilMouseMove();
/*virtual*/ BOOL isCursorHidden(); /*virtual*/ BOOL isCursorHidden();
/*virtual*/ void setCursor(ECursorType cursor); /*virtual*/ void updateCursor();
/*virtual*/ ECursorType getCursor() const; /*virtual*/ ECursorType getCursor() const;
/*virtual*/ void captureMouse(); /*virtual*/ void captureMouse();
/*virtual*/ void releaseMouse(); /*virtual*/ void releaseMouse();

View File

@@ -65,7 +65,7 @@ public:
/*virtual*/ void showCursorFromMouseMove() {}; /*virtual*/ void showCursorFromMouseMove() {};
/*virtual*/ void hideCursorUntilMouseMove() {}; /*virtual*/ void hideCursorUntilMouseMove() {};
/*virtual*/ BOOL isCursorHidden() {return FALSE;}; /*virtual*/ BOOL isCursorHidden() {return FALSE;};
/*virtual*/ void setCursor(ECursorType cursor) {}; /*virtual*/ void updateCursor() {};
//virtual ECursorType getCursor() { return mCurrentCursor; }; //virtual ECursorType getCursor() { return mCurrentCursor; };
/*virtual*/ void captureMouse() {}; /*virtual*/ void captureMouse() {};
/*virtual*/ void releaseMouse() {}; /*virtual*/ void releaseMouse() {};

View File

@@ -39,6 +39,7 @@
#include "llwindowcallbacks.h" #include "llwindowcallbacks.h"
#include "llkeyboardsdl.h" #include "llkeyboardsdl.h"
#include "llerror.h" #include "llerror.h"
#include "llgl.h" #include "llgl.h"
#include "llstring.h" #include "llstring.h"
@@ -221,15 +222,14 @@ LLWindowSDL::LLWindowSDL(LLWindowCallbacks* callbacks,
#endif // LL_X11 #endif // LL_X11
#if LL_GTK #if LL_GTK
// We MUST be the first to initialize GTK, i.e. we have to beat // We MUST be the first to initialize GTK so that GTK doesn't get badly
// our embedded Mozilla to the punch so that GTK doesn't get badly
// initialized with a non-C locale and cause lots of serious random // initialized with a non-C locale and cause lots of serious random
// weirdness. // weirdness.
ll_try_gtk_init(); ll_try_gtk_init();
#endif // LL_GTK #endif // LL_GTK
// Get the original aspect ratio of the main device. // Assume 4:3 aspect ratio until we know better
mOriginalAspectRatio = 1024.0 / 768.0; // !!! *FIX: ? //(double)CGDisplayPixelsWide(mDisplay) / (double)CGDisplayPixelsHigh(mDisplay); mOriginalAspectRatio = 1024.0 / 768.0;
if (title.empty()) if (title.empty())
mWindowTitle = "SDL Window"; // *FIX: (???) mWindowTitle = "SDL Window"; // *FIX: (???)
@@ -425,7 +425,6 @@ static int x11_detect_VRAM_kb()
BOOL LLWindowSDL::createContext(int x, int y, int width, int height, int bits, BOOL fullscreen, BOOL disable_vsync) BOOL LLWindowSDL::createContext(int x, int y, int width, int height, int bits, BOOL fullscreen, BOOL disable_vsync)
{ {
//bool glneedsinit = false; //bool glneedsinit = false;
// const char *gllibname = null;
llinfos << "createContext, fullscreen=" << fullscreen << llinfos << "createContext, fullscreen=" << fullscreen <<
" size=" << width << "x" << height << llendl; " size=" << width << "x" << height << llendl;
@@ -856,11 +855,13 @@ void LLWindowSDL::hide()
// *FIX: What to do with SDL? // *FIX: What to do with SDL?
} }
//virtual
void LLWindowSDL::minimize() void LLWindowSDL::minimize()
{ {
// *FIX: What to do with SDL? // *FIX: What to do with SDL?
} }
//virtual
void LLWindowSDL::restore() void LLWindowSDL::restore()
{ {
// *FIX: What to do with SDL? // *FIX: What to do with SDL?
@@ -1680,12 +1681,13 @@ void check_vm_bloat()
} }
#endif // LL_LINUX #endif // LL_LINUX
} }
// virtual // virtual
void LLWindowSDL::processMiscNativeEvents() void LLWindowSDL::processMiscNativeEvents()
{ {
#if LL_GTK #if LL_GTK
// Pump GTK events to avoid starvation for: // Pump GTK events to avoid starvation for:
// * Embedded Gecko
// * DBUS servicing // * DBUS servicing
// * Anything else which quietly hooks into the default glib/GTK loop // * Anything else which quietly hooks into the default glib/GTK loop
if (ll_try_gtk_init()) if (ll_try_gtk_init())
@@ -1721,7 +1723,7 @@ void LLWindowSDL::processMiscNativeEvents()
void LLWindowSDL::gatherInput() void LLWindowSDL::gatherInput()
{ {
const Uint32 CLICK_THRESHOLD = 500; // milliseconds const Uint32 CLICK_THRESHOLD = 500; // milliseconds
static int leftClick = 0; static int leftClick = 0;
static int rightClick = 0; static int rightClick = 0;
static Uint32 lastLeftDown = 0; static Uint32 lastLeftDown = 0;
@@ -1747,16 +1749,17 @@ void LLWindowSDL::gatherInput()
mKeyScanCode = event.key.keysym.scancode; mKeyScanCode = event.key.keysym.scancode;
mKeyVirtualKey = event.key.keysym.unicode; mKeyVirtualKey = event.key.keysym.unicode;
mKeyModifiers = event.key.keysym.mod; mKeyModifiers = event.key.keysym.mod;
gKeyboard->handleKeyDown(event.key.keysym.sym, event.key.keysym.mod);
// part of the fix for SL-13243
if (SDLCheckGrabbyKeys(event.key.keysym.sym, TRUE) != 0)
SDLReallyCaptureInput(TRUE);
if (event.key.keysym.unicode) gKeyboard->handleKeyDown(event.key.keysym.sym, event.key.keysym.mod);
{ // part of the fix for SL-13243
handleUnicodeUTF16(event.key.keysym.unicode, if (SDLCheckGrabbyKeys(event.key.keysym.sym, TRUE) != 0)
gKeyboard->currentMask(FALSE)); SDLReallyCaptureInput(TRUE);
}
if (event.key.keysym.unicode)
{
handleUnicodeUTF16(event.key.keysym.unicode,
gKeyboard->currentMask(FALSE));
}
break; break;
case SDL_KEYUP: case SDL_KEYUP:
@@ -1767,8 +1770,8 @@ void LLWindowSDL::gatherInput()
if (SDLCheckGrabbyKeys(event.key.keysym.sym, FALSE) == 0) if (SDLCheckGrabbyKeys(event.key.keysym.sym, FALSE) == 0)
SDLReallyCaptureInput(FALSE); // part of the fix for SL-13243 SDLReallyCaptureInput(FALSE); // part of the fix for SL-13243
gKeyboard->handleKeyUp(event.key.keysym.sym, event.key.keysym.mod); gKeyboard->handleKeyUp(event.key.keysym.sym, event.key.keysym.mod);
break; break;
case SDL_MOUSEBUTTONDOWN: case SDL_MOUSEBUTTONDOWN:
{ {
@@ -1878,7 +1881,7 @@ void LLWindowSDL::gatherInput()
} }
break; break;
} }
mCallbacks->handleResize(this, width, height); mCallbacks->handleResize(this, width, height);
break; break;
} }
@@ -1932,6 +1935,8 @@ void LLWindowSDL::gatherInput()
break; break;
} }
} }
updateCursor();
#if LL_X11 #if LL_X11
// This is a good time to stop flashing the icon if our mFlashTimer has // This is a good time to stop flashing the icon if our mFlashTimer has
@@ -2018,7 +2023,7 @@ static SDL_Cursor *makeSDLCursorFromBMP(const char *filename, int hotx, int hoty
return sdlcursor; return sdlcursor;
} }
void LLWindowSDL::setCursor(ECursorType cursor) void LLWindowSDL::updateCursor()
{ {
if (ATIbug) { if (ATIbug) {
// cursor-updating is very flaky when this bug is // cursor-updating is very flaky when this bug is
@@ -2026,11 +2031,11 @@ void LLWindowSDL::setCursor(ECursorType cursor)
return; return;
} }
if (mCurrentCursor != cursor) if (mCurrentCursor != mNextCursor)
{ {
if (cursor < UI_CURSOR_COUNT) if (mNextCursor < UI_CURSOR_COUNT)
{ {
SDL_Cursor *sdlcursor = mSDLCursors[cursor]; SDL_Cursor *sdlcursor = mSDLCursors[mNextCursor];
// Try to default to the arrow for any cursors that // Try to default to the arrow for any cursors that
// did not load correctly. // did not load correctly.
if (!sdlcursor && mSDLCursors[UI_CURSOR_ARROW]) if (!sdlcursor && mSDLCursors[UI_CURSOR_ARROW])
@@ -2038,9 +2043,9 @@ void LLWindowSDL::setCursor(ECursorType cursor)
if (sdlcursor) if (sdlcursor)
SDL_SetCursor(sdlcursor); SDL_SetCursor(sdlcursor);
} else { } else {
llwarns << "Tried to set invalid cursor number " << cursor << llendl; llwarns << "Tried to set invalid cursor number " << mNextCursor << llendl;
} }
mCurrentCursor = cursor; mCurrentCursor = mNextCursor;
} }
} }

View File

@@ -78,7 +78,7 @@ public:
/*virtual*/ void showCursorFromMouseMove(); /*virtual*/ void showCursorFromMouseMove();
/*virtual*/ void hideCursorUntilMouseMove(); /*virtual*/ void hideCursorUntilMouseMove();
/*virtual*/ BOOL isCursorHidden(); /*virtual*/ BOOL isCursorHidden();
/*virtual*/ void setCursor(ECursorType cursor); /*virtual*/ void updateCursor();
/*virtual*/ void captureMouse(); /*virtual*/ void captureMouse();
/*virtual*/ void releaseMouse(); /*virtual*/ void releaseMouse();
/*virtual*/ void setMouseClipping( BOOL b ); /*virtual*/ void setMouseClipping( BOOL b );
@@ -102,7 +102,7 @@ public:
/*virtual*/ void gatherInput(); /*virtual*/ void gatherInput();
/*virtual*/ void swapBuffers(); /*virtual*/ void swapBuffers();
/*virtual*/ void delayInputProcessing() { }; /*virtual*/ void delayInputProcessing() { };
// handy coordinate space conversion routines // handy coordinate space conversion routines
/*virtual*/ BOOL convertCoords(LLCoordScreen from, LLCoordWindow *to); /*virtual*/ BOOL convertCoords(LLCoordScreen from, LLCoordWindow *to);

View File

@@ -677,6 +677,7 @@ void LLWindowWin32::hide()
ShowWindow(mWindowHandle, SW_HIDE); ShowWindow(mWindowHandle, SW_HIDE);
} }
//virtual
void LLWindowWin32::minimize() void LLWindowWin32::minimize()
{ {
setMouseClipping(FALSE); setMouseClipping(FALSE);
@@ -684,7 +685,7 @@ void LLWindowWin32::minimize()
ShowWindow(mWindowHandle, SW_MINIMIZE); ShowWindow(mWindowHandle, SW_MINIMIZE);
} }
//virtual
void LLWindowWin32::restore() void LLWindowWin32::restore()
{ {
ShowWindow(mWindowHandle, SW_RESTORE); ShowWindow(mWindowHandle, SW_RESTORE);
@@ -1019,6 +1020,7 @@ BOOL LLWindowWin32::switchContext(BOOL fullscreen, const LLCoordScreen &size, BO
dw_style = WS_OVERLAPPEDWINDOW; dw_style = WS_OVERLAPPEDWINDOW;
} }
// don't post quit messages when destroying old windows // don't post quit messages when destroying old windows
mPostQuit = FALSE; mPostQuit = FALSE;
@@ -1070,6 +1072,8 @@ BOOL LLWindowWin32::switchContext(BOOL fullscreen, const LLCoordScreen &size, BO
return FALSE; return FALSE;
} }
LL_INFOS("Window") << "Device context retrieved." << llendl ;
if (!(pixel_format = ChoosePixelFormat(mhDC, &pfd))) if (!(pixel_format = ChoosePixelFormat(mhDC, &pfd)))
{ {
close(); close();
@@ -1078,6 +1082,8 @@ BOOL LLWindowWin32::switchContext(BOOL fullscreen, const LLCoordScreen &size, BO
return FALSE; return FALSE;
} }
LL_INFOS("Window") << "Pixel format chosen." << llendl ;
// Verify what pixel format we actually received. // Verify what pixel format we actually received.
if (!DescribePixelFormat(mhDC, pixel_format, sizeof(PIXELFORMATDESCRIPTOR), if (!DescribePixelFormat(mhDC, pixel_format, sizeof(PIXELFORMATDESCRIPTOR),
&pfd)) &pfd))
@@ -1653,13 +1659,13 @@ void LLWindowWin32::initCursors()
mCursor[ UI_CURSOR_PIPETTE ] = LoadCursor(module, TEXT("TOOLPIPETTE")); mCursor[ UI_CURSOR_PIPETTE ] = LoadCursor(module, TEXT("TOOLPIPETTE"));
// Color cursors // Color cursors
mCursor[UI_CURSOR_TOOLSIT] = loadColorCursor(TEXT("TOOLSIT")); mCursor[ UI_CURSOR_TOOLSIT ] = loadColorCursor(TEXT("TOOLSIT"));
mCursor[UI_CURSOR_TOOLBUY] = loadColorCursor(TEXT("TOOLBUY")); mCursor[ UI_CURSOR_TOOLBUY ] = loadColorCursor(TEXT("TOOLBUY"));
mCursor[UI_CURSOR_TOOLPAY] = loadColorCursor(TEXT("TOOLPAY")); mCursor[ UI_CURSOR_TOOLPAY ] = loadColorCursor(TEXT("TOOLPAY"));
mCursor[UI_CURSOR_TOOLOPEN] = loadColorCursor(TEXT("TOOLOPEN")); mCursor[ UI_CURSOR_TOOLOPEN ] = loadColorCursor(TEXT("TOOLOPEN"));
mCursor[UI_CURSOR_TOOLPLAY] = loadColorCursor(TEXT("TOOLPLAY")); mCursor[ UI_CURSOR_TOOLPLAY ] = loadColorCursor(TEXT("TOOLPLAY"));
mCursor[UI_CURSOR_TOOLPAUSE] = loadColorCursor(TEXT("TOOLPAUSE")); mCursor[ UI_CURSOR_TOOLPAUSE ] = loadColorCursor(TEXT("TOOLPAUSE"));
mCursor[UI_CURSOR_TOOLMEDIAOPEN] = loadColorCursor(TEXT("TOOLMEDIAOPEN")); mCursor[ UI_CURSOR_TOOLMEDIAOPEN ] = loadColorCursor(TEXT("TOOLMEDIAOPEN"));
// Note: custom cursors that are not found make LoadCursor() return NULL. // Note: custom cursors that are not found make LoadCursor() return NULL.
for( S32 i = 0; i < UI_CURSOR_COUNT; i++ ) for( S32 i = 0; i < UI_CURSOR_COUNT; i++ )
@@ -1673,18 +1679,18 @@ void LLWindowWin32::initCursors()
void LLWindowWin32::setCursor(ECursorType cursor) void LLWindowWin32::updateCursor()
{ {
if (cursor == UI_CURSOR_ARROW if (mNextCursor == UI_CURSOR_ARROW
&& mBusyCount > 0) && mBusyCount > 0)
{ {
cursor = UI_CURSOR_WORKING; mNextCursor = UI_CURSOR_WORKING;
} }
if( mCurrentCursor != cursor ) if( mCurrentCursor != mNextCursor )
{ {
mCurrentCursor = cursor; mCurrentCursor = mNextCursor;
SetCursor( mCursor[cursor] ); SetCursor( mCursor[mNextCursor] );
} }
} }
@@ -1764,6 +1770,8 @@ void LLWindowWin32::gatherInput()
mInputProcessingPaused = FALSE; mInputProcessingPaused = FALSE;
updateCursor();
// clear this once we've processed all mouse messages that might have occurred after // clear this once we've processed all mouse messages that might have occurred after
// we slammed the mouse position // we slammed the mouse position
mMousePositionModified = FALSE; mMousePositionModified = FALSE;

View File

@@ -72,7 +72,7 @@ public:
/*virtual*/ void showCursorFromMouseMove(); /*virtual*/ void showCursorFromMouseMove();
/*virtual*/ void hideCursorUntilMouseMove(); /*virtual*/ void hideCursorUntilMouseMove();
/*virtual*/ BOOL isCursorHidden(); /*virtual*/ BOOL isCursorHidden();
/*virtual*/ void setCursor(ECursorType cursor); /*virtual*/ void updateCursor();
/*virtual*/ ECursorType getCursor() const; /*virtual*/ ECursorType getCursor() const;
/*virtual*/ void captureMouse(); /*virtual*/ void captureMouse();
/*virtual*/ void releaseMouse(); /*virtual*/ void releaseMouse();

View File

@@ -474,8 +474,6 @@ set(viewer_SOURCE_FILES
llviewerfoldertype.cpp llviewerfoldertype.cpp
llviewergenericmessage.cpp llviewergenericmessage.cpp
llviewergesture.cpp llviewergesture.cpp
#llviewerimage.cpp
#llviewerimagelist.cpp
llviewerinventory.cpp llviewerinventory.cpp
llviewerjoint.cpp llviewerjoint.cpp
llviewerjointattachment.cpp llviewerjointattachment.cpp
@@ -976,8 +974,6 @@ set(viewer_HEADER_FILES
llviewerfoldertype.h llviewerfoldertype.h
llviewergenericmessage.h llviewergenericmessage.h
llviewergesture.h llviewergesture.h
#llviewerimage.h
#llviewerimagelist.h
llviewerinventory.h llviewerinventory.h
llviewerjoint.h llviewerjoint.h
llviewerjointattachment.h llviewerjointattachment.h
@@ -1372,23 +1368,28 @@ if (FMOD OR FMODEX)
endif (FMOD) endif (FMOD)
if (DARWIN) if (DARWIN)
set(fmodwrapper_SOURCE_FILES fmodwrapper.cpp) if(FMOD)
add_library(fmodwrapper SHARED ${fmodwrapper_SOURCE_FILES}) set(fmodwrapper_SOURCE_FILES fmodwrapper.cpp)
if (FMODEX) add_library(fmodwrapper SHARED ${fmodwrapper_SOURCE_FILES})
set(fmodwrapper_needed_LIBRARIES ${FMODEX_LIBRARY} ${CARBON_LIBRARY}) if (FMODEX)
endif (FMODEX) set(fmodwrapper_needed_LIBRARIES ${FMODEX_LIBRARY} ${CARBON_LIBRARY})
if (FMOD) endif (FMODEX)
set(fmodwrapper_needed_LIBRARIES ${FMOD_LIBRARY} ${CARBON_LIBRARY}) if (FMOD)
endif (FMOD) set(fmodwrapper_needed_LIBRARIES ${FMOD_LIBRARY} ${CARBON_LIBRARY})
set_target_properties( endif (FMOD)
fmodwrapper set_target_properties(
PROPERTIES fmodwrapper
BUILD_WITH_INSTALL_RPATH 1 PROPERTIES
INSTALL_NAME_DIR "@executable_path/../Resources" BUILD_WITH_INSTALL_RPATH 1
LINK_FLAGS "-unexported_symbols_list ${CMAKE_CURRENT_SOURCE_DIR}/fmod_hidden_symbols.exp" INSTALL_NAME_DIR "@executable_path/../Resources"
) LINK_FLAGS "-unexported_symbols_list ${CMAKE_CURRENT_SOURCE_DIR}/fmod_hidden_symbols.exp"
set(FMODWRAPPER_LIBRARY fmodwrapper) )
target_link_libraries(fmodwrapper ${fmodwrapper_needed_LIBRARIES}) set(FMODWRAPPER_LIBRARY fmodwrapper)
target_link_libraries(fmodwrapper ${fmodwrapper_needed_LIBRARIES})
endif(FMOD)
if(FMODEX)
set(FMODWRAPPER_LIBRARY ${FMODEX_LIBRARY})
endif(FMODEX)
else (DARWIN) else (DARWIN)
# fmodwrapper unnecessary on linux or windows, for fmod and fmodex # fmodwrapper unnecessary on linux or windows, for fmod and fmodex
if (FMODEX) if (FMODEX)
@@ -1798,7 +1799,7 @@ endif (WINDOWS)
if (DARWIN) if (DARWIN)
# Don't do this here -- it's taken care of by viewer_manifest.py # Don't do this here -- it's taken care of by viewer_manifest.py
# add_custom_command(TARGET ${VIEWER_BINARY_NAME} POST_BUILD # add_custom_command(TARGET ${VIEWER_BINARY_NAME} POST_BUILD
# COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/../libraries/universal-darwin/lib_release/libllqtwebkit.dylib ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/llplugin/ # COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/../libraries/universal-darwin/lib/release/libllqtwebkit.dylib ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/llplugin/
# DEPENDS ${CMAKE_SOURCE_DIR}/../libraries/universal-darwin/lib_release/libllqtwebkit.dylib # DEPENDS ${CMAKE_SOURCE_DIR}/../libraries/universal-darwin/lib/release/libllqtwebkit.dylib
# ) # )
endif (DARWIN) endif (DARWIN)

View File

@@ -2,6 +2,6 @@
CFBundleName = "Singularity"; CFBundleName = "Singularity";
CFBundleShortVersionString = "Singularity Viewer 1.5.0.0"; CFBundleShortVersionString = "Singularity Viewer 1.7.0.0";
CFBundleGetInfoString = "Singularity Viewer 1.5.0.0, Copyright 2010 Siana Gearz"; CFBundleGetInfoString = "Singularity Viewer 1.7.0.0, Copyright 2012 Siana Gearz";

View File

@@ -9,7 +9,7 @@
<key>CFBundleIconFile</key> <key>CFBundleIconFile</key>
<string>singularity.icns</string> <string>singularity.icns</string>
<key>CFBundleIdentifier</key> <key>CFBundleIdentifier</key>
<string>com.secondlife.indra.viewer</string> <string>org.singularityviewer.singularity</string>
<key>CFBundleInfoDictionaryVersion</key> <key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string> <string>6.0</string>
<key>CFBundleName</key> <key>CFBundleName</key>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

@@ -464,12 +464,8 @@ class DarwinManifest(ViewerManifest):
self.path(self.info_plist_name(), dst="Info.plist") self.path(self.info_plist_name(), dst="Info.plist")
# copy additional libs in <bundle>/Contents/MacOS/ # copy additional libs in <bundle>/Contents/MacOS/
self.path("../../libraries/universal-darwin/lib_release/libhunspell-1.2.dylib", dst="MacOS/libhunspell-1.2.dylib") self.path("../../libraries/universal-darwin/lib/release/libndofdev.dylib", dst="Resources/libndofdev.dylib")
self.path("../../libraries/universal-darwin/lib_release/libndofdev.dylib", dst="MacOS/libndofdev.dylib") self.path("../../libraries/universal-darwin/lib/release/libhunspell-1.3.0.dylib", dst="Resources/libhunspell-1.3.0.dylib")
#self.path("../../libraries/universal-darwin/lib_release/libvorbisenc.2.dylib", dst="MacOS/libvorbisenc.2.dylib")
#self.path("../../libraries/universal-darwin/lib_release/libvorbisfile.3.dylib", dst="MacOS/libvorbisfile.3.dylib")
#self.path("../../libraries/universal-darwin/lib_release/libvorbis.0.dylib", dst="MacOS/libvorbis.0.dylib")
#self.path("../../libraries/universal-darwin/lib_release/libogg.0.dylib", dst="MacOS/libogg.0.dylib")
# most everything goes in the Resources directory # most everything goes in the Resources directory
if self.prefix(src="", dst="Resources"): if self.prefix(src="", dst="Resources"):
@@ -514,11 +510,11 @@ class DarwinManifest(ViewerManifest):
self.path("../llcommon/" + self.args['configuration'] + "/libllcommon.dylib", "libllcommon.dylib") self.path("../llcommon/" + self.args['configuration'] + "/libllcommon.dylib", "libllcommon.dylib")
libfile = "lib%s.dylib" libfile = "lib%s.dylib"
libdir = "../../libraries/universal-darwin/lib_release" libdir = "../../libraries/universal-darwin/lib/release"
for libfile in ("libapr-1.0.dylib", for libfile in ("libapr-1.0.dylib",
"libaprutil-1.0.dylib", "libaprutil-1.0.dylib",
"libexpat.0.5.0.dylib"): "libexpat.1.5.2.dylib"):
self.path(os.path.join(libdir, libfile), libfile) self.path(os.path.join(libdir, libfile), libfile)
# For using FMOD for sound...but, fmod is proprietary so some might not use it... # For using FMOD for sound...but, fmod is proprietary so some might not use it...
@@ -545,7 +541,7 @@ class DarwinManifest(ViewerManifest):
for libfile in ("libllcommon.dylib", for libfile in ("libllcommon.dylib",
"libapr-1.0.dylib", "libapr-1.0.dylib",
"libaprutil-1.0.dylib", "libaprutil-1.0.dylib",
"libexpat.0.5.0.dylib"): "libexpat.1.5.2.dylib"):
target_lib = os.path.join('../../..', libfile) target_lib = os.path.join('../../..', libfile)
self.run_command("ln -sf %(target)r %(link)r" % self.run_command("ln -sf %(target)r %(link)r" %
{'target': target_lib, {'target': target_lib,
@@ -561,7 +557,7 @@ class DarwinManifest(ViewerManifest):
self.path("../plugins/filepicker/" + self.args['configuration'] + "/basic_plugin_filepicker.dylib", "basic_plugin_filepicker.dylib") self.path("../plugins/filepicker/" + self.args['configuration'] + "/basic_plugin_filepicker.dylib", "basic_plugin_filepicker.dylib")
self.path("../plugins/quicktime/" + self.args['configuration'] + "/media_plugin_quicktime.dylib", "media_plugin_quicktime.dylib") self.path("../plugins/quicktime/" + self.args['configuration'] + "/media_plugin_quicktime.dylib", "media_plugin_quicktime.dylib")
self.path("../plugins/webkit/" + self.args['configuration'] + "/media_plugin_webkit.dylib", "media_plugin_webkit.dylib") self.path("../plugins/webkit/" + self.args['configuration'] + "/media_plugin_webkit.dylib", "media_plugin_webkit.dylib")
self.path("../../libraries/universal-darwin/lib_release/libllqtwebkit.dylib", "libllqtwebkit.dylib") self.path("../../libraries/universal-darwin/lib/release/libllqtwebkit.dylib", "libllqtwebkit.dylib")
self.end_prefix("llplugin") self.end_prefix("llplugin")
@@ -829,26 +825,24 @@ class Linux_x86_64Manifest(LinuxManifest):
self.path("../llcommon/libllcommon.so", "lib64/libllcommon.so") self.path("../llcommon/libllcommon.so", "lib64/libllcommon.so")
if (not self.standalone()) and self.prefix("../../libraries/x86_64-linux/lib_release_client", dst="lib64"): if (not self.standalone()) and self.prefix("../../libraries/x86_64-linux/lib/release", dst="lib64"):
self.path("libapr-1.so.0") self.path("libapr-1.so*")
self.path("libaprutil-1.so.0") self.path("libaprutil-1.so*")
self.path("libdb-4.2.so") self.path("libdb-*.so*")
self.path("libcrypto.so.0.9.8") self.path("libcrypto.so.*")
self.path("libexpat.so.1") self.path("libexpat.so*")
self.path("libhunspell-1.2.so.0.0.0", "libhunspell-1.2.so.0") self.path("libhunspell-1.3.so*")
self.path("libssl.so.0.9.8") self.path("libssl.so*")
self.path("libuuid.so", "libuuid.so.1") self.path("libuuid.so*")
self.path("libSDL-1.2.so.0") self.path("libSDL-1.2.so*")
self.path("libELFIO.so") self.path("libELFIO.so")
self.path("libjpeg.so.7") self.path("libjpeg.so*")
self.path("libpng12.so.0") self.path("libpng.so*")
self.path("libopenjpeg.so.2") self.path("libz.so*")
self.path("libxml2.so.2")
#self.path("libz.so.1") #not needed
# OpenAL # OpenAL
self.path("libopenal.so.1") self.path("libopenal.so*")
self.path("libalut.so.0") self.path("libalut.so*")
self.end_prefix("lib64") self.end_prefix("lib64")
@@ -864,7 +858,7 @@ class Linux_x86_64Manifest(LinuxManifest):
self.end_prefix("lib32") self.end_prefix("lib32")
# 32bit libs needed for voice # 32bit libs needed for voice
if self.prefix("../../libraries/x86_64-linux/lib_release_client/32bit-compat", dst="lib32"): if self.prefix("../../libraries/x86_64-linux/lib/release/32bit-compat", dst="lib32"):
self.path("libalut.so") self.path("libalut.so")
self.path("libidn.so.11") self.path("libidn.so.11")
self.path("libopenal.so.1") self.path("libopenal.so.1")

View File

@@ -115,8 +115,8 @@ if (DARWIN)
add_custom_command( add_custom_command(
TARGET media_plugin_webkit POST_BUILD TARGET media_plugin_webkit POST_BUILD
# OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/libllqtwebkit.dylib # OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/libllqtwebkit.dylib
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/../libraries/universal-darwin/lib_release/libllqtwebkit.dylib ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/ COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/../libraries/universal-darwin/lib/release/libllqtwebkit.dylib ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/
DEPENDS media_plugin_webkit ${CMAKE_SOURCE_DIR}/../libraries/universal-darwin/lib_release/libllqtwebkit.dylib DEPENDS media_plugin_webkit ${CMAKE_SOURCE_DIR}/../libraries/universal-darwin/lib/release/libllqtwebkit.dylib
) )
endif (DARWIN) endif (DARWIN)

View File

@@ -370,8 +370,8 @@ endif (DARWIN OR WINDOWS)
if (DARWIN) if (DARWIN)
add_custom_command(TARGET llmediaplugintest POST_BUILD add_custom_command(TARGET llmediaplugintest POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/../libraries/universal-darwin/lib_release/libllqtwebkit.dylib ${PLUGINS_DESTINATION_DIR} COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/../libraries/universal-darwin/lib/release/libllqtwebkit.dylib ${PLUGINS_DESTINATION_DIR}
DEPENDS ${CMAKE_SOURCE_DIR}/../libraries/universal-darwin/lib_release/libllqtwebkit.dylib DEPENDS ${CMAKE_SOURCE_DIR}/../libraries/universal-darwin/lib/release/libllqtwebkit.dylib
) )
endif (DARWIN) endif (DARWIN)

View File

@@ -76,6 +76,13 @@
<key>url</key> <key>url</key>
<uri>https://github.com/downloads/LightDrake/Public-Libraries/SDL-1.2.14-linux-20110309.tar.bz2</uri> <uri>https://github.com/downloads/LightDrake/Public-Libraries/SDL-1.2.14-linux-20110309.tar.bz2</uri>
</map> </map>
<key>linux64</key>
<map>
<key>md5sum</key>
<string>2d40e76689d6e8c034490c1cbe9a4961</string>
<key>url</key>
<uri>https://github.com/downloads/LightDrake/Public-Libraries/SDL-1.2.14-linux-x86_64-20120604.tar.bz2</uri>
</map>
</map> </map>
</map> </map>
<key>apr_suite</key> <key>apr_suite</key>
@@ -87,9 +94,9 @@
<key>darwin</key> <key>darwin</key>
<map> <map>
<key>md5sum</key> <key>md5sum</key>
<string>a2794fbeeb03f530a6b7a0879c544f32</string> <string>3cae5f0fd8f3dd80a59b450562f781bc</string>
<key>url</key> <key>url</key>
<uri>https://github.com/downloads/LightDrake/Public-Libraries/apr_suite-1.4.5-darwin-20120618.tar.bz2</uri> <uri>https://github.com/downloads/LightDrake/Public-Libraries/apr_suite-1.4.5-darwin-20120715.tar.bz2</uri>
</map> </map>
<key>linux</key> <key>linux</key>
<map> <map>
@@ -101,9 +108,9 @@
<key>linux64</key> <key>linux64</key>
<map> <map>
<key>md5sum</key> <key>md5sum</key>
<string>1a7e1186855d48d8316ce86803095f70</string> <string>66326975f779213886dbaaf021fa3412</string>
<key>url</key> <key>url</key>
<uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/apr_suite-1.2.8-linux64-20080909a.tar.bz2</uri> <uri>https://github.com/downloads/LightDrake/Public-Libraries/apr_suite-1.4.5-linux-x86_64-20120604.tar.bz2</uri>
</map> </map>
<key>windows</key> <key>windows</key>
<map> <map>
@@ -127,9 +134,9 @@
<key>darwin</key> <key>darwin</key>
<map> <map>
<key>md5sum</key> <key>md5sum</key>
<string>e4c0aa075086ec2f6b62c9498b381d63</string> <string>90b8ec87cab3debaf8da5436dc8f3819</string>
<key>url</key> <key>url</key>
<uri>https://github.com/downloads/LightDrake/Public-Libraries/ares-1.7.1-darwin-20110217.tar.bz2</uri> <uri>https://github.com/downloads/LightDrake/Public-Libraries/ares-1.7.1-darwin-20120712.tar.bz2</uri>
</map> </map>
<key>linux</key> <key>linux</key>
<map> <map>
@@ -141,9 +148,9 @@
<key>linux64</key> <key>linux64</key>
<map> <map>
<key>md5sum</key> <key>md5sum</key>
<string>f7cbf2b6e74de4556148663b93ead4d3</string> <string>e2bf7c556ce3525cb6ad20f2d4d80cf4</string>
<key>url</key> <key>url</key>
<uri>https://github.com/downloads/Shyotl/SingularityViewer/ares-1.3.0-linux64-20080909.tar.bz2</uri> <uri>https://github.com/downloads/LightDrake/Public-Libraries/ares-1.7.5-linux-x86_64-20120605.tar.bz2</uri>
</map> </map>
<key>windows</key> <key>windows</key>
<map> <map>
@@ -178,6 +185,13 @@
<key>url</key> <key>url</key>
<uri>https://github.com/downloads/LightDrake/Public-Libraries/boost-1.45.0-linux-20110604.tar.bz2</uri> <uri>https://github.com/downloads/LightDrake/Public-Libraries/boost-1.45.0-linux-20110604.tar.bz2</uri>
</map> </map>
<key>linux64</key>
<map>
<key>md5sum</key>
<string>a7c23f5395f79033dbb09b201f16a4ce</string>
<key>url</key>
<uri>https://github.com/downloads/LightDrake/Public-Libraries/boost-1.48.0-linux-x86_64-20120514.tar.bz2</uri>
</map>
<key>windows</key> <key>windows</key>
<map> <map>
<key>md5sum</key> <key>md5sum</key>
@@ -247,9 +261,9 @@
<key>linux64</key> <key>linux64</key>
<map> <map>
<key>md5sum</key> <key>md5sum</key>
<string>8a28849f4b9d99601dbc8db9d6a2f9ba</string> <string>f6d0f7a6151c1b5a2633679126fbefb0</string>
<key>url</key> <key>url</key>
<uri>https://github.com/downloads/Shyotl/SingularityViewer/curl-7.16.4a-linux64-20090303.tar.bz2</uri> <uri>https://github.com/downloads/LightDrake/Public-Libraries/curl-7.24.0-linux-x86_64-20120605.tar.bz2</uri>
</map> </map>
<key>windows</key> <key>windows</key>
<map> <map>
@@ -277,6 +291,13 @@
<key>url</key> <key>url</key>
<uri>https://github.com/downloads/LightDrake/Public-Libraries/db-5.1.25-linux-20110309.tar.bz2</uri> <uri>https://github.com/downloads/LightDrake/Public-Libraries/db-5.1.25-linux-20110309.tar.bz2</uri>
</map> </map>
<key>linux64</key>
<map>
<key>md5sum</key>
<string>894f6a09e581bcf4a2c36f8f66379704</string>
<key>url</key>
<uri>https://github.com/downloads/LightDrake/Public-Libraries/db-5.1.25-Linux-x86_64-20110807.tar.bz2</uri>
</map>
</map> </map>
</map> </map>
<key>dbghelp</key> <key>dbghelp</key>
@@ -318,9 +339,9 @@
<key>linux64</key> <key>linux64</key>
<map> <map>
<key>md5sum</key> <key>md5sum</key>
<string>09be41e3145e1a960e50f2f9ce0a5e7d</string> <string>3751294773dff647b3493764dc6539dc</string>
<key>url</key> <key>url</key>
<uri>http://imprudenceviewer.org/download/libs/dbusglib-linux64-20101007.tar.bz2</uri> <uri>https://github.com/downloads/LightDrake/Public-Libraries/dbus_glib-0.76-linux64-20110310.tar.bz2</uri>
</map> </map>
</map> </map>
</map> </map>
@@ -340,9 +361,9 @@
<key>linux64</key> <key>linux64</key>
<map> <map>
<key>md5sum</key> <key>md5sum</key>
<string>e829a52ba67e02b011cf2e372914d32f</string> <string>d826535e096d707ef1a2783ce66ad2f9</string>
<key>url</key> <key>url</key>
<uri>http://imprudenceviewer.org/download/libs/elfio-1.0.3-linux64-20091129.tar.bz2</uri> <uri>https://github.com/downloads/LightDrake/Public-Libraries/elfio-1.0.3-linux64-20091129.tar.bz2</uri>
</map> </map>
</map> </map>
</map> </map>
@@ -373,9 +394,9 @@
<key>linux64</key> <key>linux64</key>
<map> <map>
<key>md5sum</key> <key>md5sum</key>
<string>278c61871419b9a4d50a4f88b7922403</string> <string>58d7d0a12984cd57822c709d51ee18f7</string>
<key>url</key> <key>url</key>
<uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/expat-1.95.8-linux64-20080909.tar.bz2</uri> <uri>https://github.com/downloads/LightDrake/Public-Libraries/expat-2.0.1-linux-x86_64-20120530.tar.bz2</uri>
</map> </map>
<key>windows</key> <key>windows</key>
<map> <map>
@@ -399,6 +420,13 @@
<key>url</key> <key>url</key>
<uri>https://github.com/downloads/LightDrake/Public-Libraries/fontconfig-2.8.0-linux-20110311.tar.bz2</uri> <uri>https://github.com/downloads/LightDrake/Public-Libraries/fontconfig-2.8.0-linux-20110311.tar.bz2</uri>
</map> </map>
<key>linux64</key>
<map>
<key>md5sum</key>
<string>1736c637f7ae184fa94b3eb2c0e5f5da</string>
<key>url</key>
<uri>https://github.com/downloads/LightDrake/Public-Libraries/fontconfig-2.8.0-linux-x86_64-20120531.tar.bz2</uri>
</map>
</map> </map>
</map> </map>
<key>freeglut</key> <key>freeglut</key>
@@ -447,9 +475,9 @@
<key>linux64</key> <key>linux64</key>
<map> <map>
<key>md5sum</key> <key>md5sum</key>
<string>1b4624ab06a7ba30e29d1994424db41e</string> <string>9513c22a343369043536514bc87e5801</string>
<key>url</key> <key>url</key>
<uri>http://imprudenceviewer.org/download/libs/freetype-2.3.11-linux64-20091230.tar.bz2</uri> <uri>https://github.com/downloads/LightDrake/Public-Libraries/freetype-2.3.11-linux-x86_64-20120616.tar.bz2</uri>
</map> </map>
<key>windows</key> <key>windows</key>
<map> <map>
@@ -477,6 +505,13 @@
<key>url</key> <key>url</key>
<uri>https://github.com/downloads/LightDrake/Public-Libraries/glext-82-win32-linux.tar.bz2</uri> <uri>https://github.com/downloads/LightDrake/Public-Libraries/glext-82-win32-linux.tar.bz2</uri>
</map> </map>
<key>linux64</key>
<map>
<key>md5sum</key>
<string>b94a97e60b37afee73f5525cd07ba959</string>
<key>url</key>
<uri>https://github.com/downloads/LightDrake/Public-Libraries/glext-82-win32-linux.tar.bz2</uri>
</map>
<key>windows</key> <key>windows</key>
<map> <map>
<key>md5sum</key> <key>md5sum</key>
@@ -504,9 +539,9 @@
<key>linux64</key> <key>linux64</key>
<map> <map>
<key>md5sum</key> <key>md5sum</key>
<string>58c11add6b275c163950364df5b2964a</string> <string>36575a2975f9ef70281a3062867bd2f8</string>
<key>url</key> <key>url</key>
<uri>http://imprudenceviewer.org/download/libs/glib-2.20.5-linux64-20100515.tar.bz2</uri> <uri>https://github.com/downloads/LightDrake/Public-Libraries/glib-2.25.17-linux-x86_64-20120422.tar.bz2</uri>
</map> </map>
</map> </map>
</map> </map>
@@ -574,9 +609,9 @@
<key>linux64</key> <key>linux64</key>
<map> <map>
<key>md5sum</key> <key>md5sum</key>
<string>7e6fc4e185e8444a07b58ba7c0df255a</string> <string>37541c812162f009f50e3749220fb782</string>
<key>url</key> <key>url</key>
<uri>http://imprudenceviewer.org/download/libs/gstreamer-0.10.24-linux64-20091230.tar.bz2</uri> <uri>https://github.com/downloads/LightDrake/Public-Libraries/gstreamer-0.10.28-linux-x86_64-20120608.tar.bz2</uri>
</map> </map>
</map> </map>
</map> </map>
@@ -597,6 +632,13 @@
<key>url</key> <key>url</key>
<uri>https://github.com/downloads/LightDrake/Public-Libraries/gtk-etc-linux-20101106.tar.bz2</uri> <uri>https://github.com/downloads/LightDrake/Public-Libraries/gtk-etc-linux-20101106.tar.bz2</uri>
</map> </map>
<key>linux64</key>
<map>
<key>md5sum</key>
<string>1b69a92d684a1b8208aa1d227d8d1bdf</string>
<key>url</key>
<uri>https://github.com/downloads/LightDrake/Public-Libraries/gtk_etc-0.0.1-linux-x86_64-20120609.tar.bz2</uri>
</map>
</map> </map>
</map> </map>
<key>hunspell</key> <key>hunspell</key>
@@ -626,9 +668,9 @@
<key>linux64</key> <key>linux64</key>
<map> <map>
<key>md5sum</key> <key>md5sum</key>
<string>5388725d012c3bfabcc420be53442018</string> <string>889d6abceda50f12d0f22c1310844c4b</string>
<key>url</key> <key>url</key>
<uri>http://imprudenceviewer.org/download/libs/hunspell-1.2-linux64-20100902.tar.bz2</uri> <uri>https://github.com/downloads/LightDrake/Public-Libraries/libhunspell-1.3.2-linux-x86_64-20120708.tar.bz2</uri>
</map> </map>
<key>windows</key> <key>windows</key>
<map> <map>
@@ -652,9 +694,9 @@
<key>darwin</key> <key>darwin</key>
<map> <map>
<key>md5sum</key> <key>md5sum</key>
<string>ebad9348d0cbf1d768de727c1d6e1822</string> <string>6505f9e93ac0f7595df8dd566f49c298</string>
<key>url</key> <key>url</key>
<uri>https://github.com/downloads/LightDrake/Public-Libraries/jpeglib-8c-darwin-20110228.tar.bz2</uri> <uri>https://github.com/downloads/LightDrake/Public-Libraries/jpeglib-8c-darwin-20120712.tar.bz2</uri>
</map> </map>
<key>linux</key> <key>linux</key>
<map> <map>
@@ -666,9 +708,9 @@
<key>linux64</key> <key>linux64</key>
<map> <map>
<key>md5sum</key> <key>md5sum</key>
<string>0e7facf7d48531d20c0cd6a3c3f04021</string> <string>7f2e1c0ea2f589c4888ec7f5a214af88</string>
<key>url</key> <key>url</key>
<uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/jpeglib-6b-linux64-20080909.tar.bz2</uri> <uri>https://github.com/downloads/LightDrake/Public-Libraries/jpeglib-7-linux-x86_64-20120531b.tar.bz2</uri>
</map> </map>
<key>windows</key> <key>windows</key>
<map> <map>
@@ -746,9 +788,9 @@
<key>linux64</key> <key>linux64</key>
<map> <map>
<key>md5sum</key> <key>md5sum</key>
<string>5ee1e62bde38520c7f134c4afb9ac9b1</string> <string>ec833cfbfce8a818158e289a6c21ad72</string>
<key>url</key> <key>url</key>
<uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/libpng-1.2.35-linux64-20090304.tar.bz2</uri> <uri>https://github.com/downloads/LightDrake/Public-Libraries/libpng-1.5.10-linux-x86_64-20120420.tar.bz2</uri>
</map> </map>
<key>windows</key> <key>windows</key>
<map> <map>
@@ -776,6 +818,13 @@
<key>url</key> <key>url</key>
<uri>https://github.com/downloads/LightDrake/Public-Libraries/libuuid-1.6.2-linux-20110315.tar.bz2</uri> <uri>https://github.com/downloads/LightDrake/Public-Libraries/libuuid-1.6.2-linux-20110315.tar.bz2</uri>
</map> </map>
<key>linux64</key>
<map>
<key>md5sum</key>
<string>dc25f523bd0505bbd03fb2b277299b13</string>
<key>url</key>
<uri>https://github.com/downloads/LightDrake/Public-Libraries/uuid-1.6.2-linux-x86_64-20120601.tar.bz2</uri>
</map>
</map> </map>
</map> </map>
<key>libxml</key> <key>libxml</key>
@@ -794,9 +843,9 @@
<key>linux64</key> <key>linux64</key>
<map> <map>
<key>md5sum</key> <key>md5sum</key>
<string>921d7f980519101afb74623e29e9d175</string> <string>9bf2223e26eb4d659fe8e9283bfe73a2</string>
<key>url</key> <key>url</key>
<uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/libxml-2.6.24-linux64-20080909.tar.bz2</uri> <uri>https://github.com/downloads/LightDrake/Public-Libraries/libxml2-2.7.8-linux-x86_64-20120420.tar.bz2</uri>
</map> </map>
</map> </map>
</map> </map>
@@ -820,6 +869,13 @@
<key>url</key> <key>url</key>
<uri>https://github.com/downloads/LightDrake/Public-Libraries/llqtwebkit-4.7.1-linux-20120228.tar.bz2</uri> <uri>https://github.com/downloads/LightDrake/Public-Libraries/llqtwebkit-4.7.1-linux-20120228.tar.bz2</uri>
</map> </map>
<key>linux64</key>
<map>
<key>md5sum</key>
<string>c6f662eaa9aeaf03f73779393640f386</string>
<key>url</key>
<uri>https://github.com/downloads/LightDrake/Public-Libraries/llqtwebkit-linux-x86_64-20120716.tar.bz2</uri>
</map>
<key>windows</key> <key>windows</key>
<map> <map>
<key>md5sum</key> <key>md5sum</key>
@@ -882,9 +938,9 @@
<key>linux64</key> <key>linux64</key>
<map> <map>
<key>md5sum</key> <key>md5sum</key>
<string>d1986d287655f159be50d661c125ba19</string> <string>d2a9640c34a9a2848ba9fc63146bdce4</string>
<key>url</key> <key>url</key>
<uri>http://imprudenceviewer.org/download/libs/ndofdev-linux64-0.3.1-20100817.tar.bz2</uri> <uri>https://github.com/downloads/LightDrake/Public-Libraries/libndofdev-0.3.1-linux-x86_64-20120604.tar.bz2</uri>
</map> </map>
<key>windows</key> <key>windows</key>
<map> <map>
@@ -922,9 +978,9 @@
<key>linux64</key> <key>linux64</key>
<map> <map>
<key>md5sum</key> <key>md5sum</key>
<string>83c72b57a95e8c42560fb67955169f19</string> <string>50d232fcf120f85bf259d1b93aa767a7</string>
<key>url</key> <key>url</key>
<uri>http://imprudenceviewer.org/download/libs/ogg-vorbis-linux64-20091202.tar.bz2</uri> <uri>https://github.com/downloads/LightDrake/Public-Libraries/ogg_vorbis-1.2.2-1.3.2-linux-x86_64-20120604.tar.bz2</uri>
</map> </map>
<key>windows</key> <key>windows</key>
<map> <map>
@@ -944,9 +1000,9 @@
<key>darwin</key> <key>darwin</key>
<map> <map>
<key>md5sum</key> <key>md5sum</key>
<string>095e8a20cd0c74e2121ca81fdf389d25</string> <string>1acdf58efa7a728fd390a710c659ec65</string>
<key>url</key> <key>url</key>
<uri>https://github.com/downloads/LightDrake/Public-Libraries/openssl-1.0.0g-darwin-20120207.tar.bz2</uri> <uri>https://github.com/downloads/LightDrake/Public-Libraries/openssl-1.0.0g-darwin-20120712.tar.bz2</uri>
</map> </map>
<key>linux</key> <key>linux</key>
<map> <map>
@@ -958,9 +1014,9 @@
<key>linux64</key> <key>linux64</key>
<map> <map>
<key>md5sum</key> <key>md5sum</key>
<string>00b23f28a2457d9dabbaff0b29ee7323</string> <string>e4d434731ad8280e85f5177da8d8ed3a</string>
<key>url</key> <key>url</key>
<uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/openSSL-0.9.8g-linux64-20080909.tar.bz2</uri> <uri>https://github.com/downloads/LightDrake/Public-Libraries/openssl-1.0.0g-linux-x86_64-20120605.tar.bz2</uri>
</map> </map>
<key>windows</key> <key>windows</key>
<map> <map>
@@ -991,9 +1047,9 @@
<key>linux64</key> <key>linux64</key>
<map> <map>
<key>md5sum</key> <key>md5sum</key>
<string>5ad0a3ab623356c1ad61394ba238f99f</string> <string>843758dffdb98db9523a65fab6e136e3</string>
<key>url</key> <key>url</key>
<uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/openal-soft-1.6.372-linux64-20081219.tar.bz2</uri> <uri>https://github.com/downloads/LightDrake/Public-Libraries/openal-1.14-1.1.0-linux-x86_64-20120605.tar.bz2</uri>
</map> </map>
<key>windows</key> <key>windows</key>
<map> <map>
@@ -1047,6 +1103,13 @@
<key>url</key> <key>url</key>
<uri>https://github.com/downloads/LightDrake/Public-Libraries/linux-pulse-headers-0.9.14_1.tar.bz2</uri> <uri>https://github.com/downloads/LightDrake/Public-Libraries/linux-pulse-headers-0.9.14_1.tar.bz2</uri>
</map> </map>
<key>linux64</key>
<map>
<key>md5sum</key>
<string>736693c3f82458baee10e3eb37bc87df</string>
<key>url</key>
<uri>https://github.com/downloads/LightDrake/Public-Libraries/linux64-pulse-headers-0.9.14.tar.bz2</uri>
</map>
</map> </map>
</map> </map>
<key>tut</key> <key>tut</key>
@@ -1133,9 +1196,9 @@
<key>linux64</key> <key>linux64</key>
<map> <map>
<key>md5sum</key> <key>md5sum</key>
<string>dc67b896c56116df8e18f2d1bbd07031</string> <string>1caff2e120fac6e73cc0c60d6635d527</string>
<key>url</key> <key>url</key>
<uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/xmlrpc-epi-0.51-linux64-20080909.tar.bz2</uri> <uri>https://github.com/downloads/LightDrake/Public-Libraries/xmlrpc_epi-0.54.1-linux-x86_64-20120531.tar.bz2</uri>
</map> </map>
<key>windows</key> <key>windows</key>
<map> <map>
@@ -1173,9 +1236,9 @@
<key>linux64</key> <key>linux64</key>
<map> <map>
<key>md5sum</key> <key>md5sum</key>
<string>4bddfb2c6dd7b1470a3ed675ac14bd9a</string> <string>367cb642f1471f85f1094827ac960dbe</string>
<key>url</key> <key>url</key>
<uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/zlib-1.2.3-linux64-20080909.tar.bz2</uri> <uri>https://github.com/downloads/LightDrake/Public-Libraries/zlib-1.2.6-linux-x86_64-20120419.tar.bz2</uri>
</map> </map>
<key>windows</key> <key>windows</key>
<map> <map>