Browse Source

Merge pull request #231 from dpogue/fixes

Linux fixes
Adam Johnson 12 years ago
parent
commit
66038d4fc2
  1. 4
      CMakeLists.txt
  2. 6
      Sources/Plasma/Apps/plPythonPack/PythonInterface.cpp
  3. 5
      Sources/Plasma/CoreLib/HeadSpin.cpp
  4. 20
      Sources/Plasma/CoreLib/HeadSpin.h
  5. 54
      Sources/Plasma/CoreLib/hsCpuID.cpp
  6. 2
      Sources/Plasma/CoreLib/hsWide.h
  7. 4
      Sources/Plasma/CoreLib/plString.cpp
  8. 2
      Sources/Plasma/FeatureLib/pfAnimation/plLightModifier.cpp
  9. 8
      Sources/Plasma/PubUtilLib/plAudible/plWinAudible.cpp
  10. 1
      Sources/Plasma/PubUtilLib/plDrawable/plDynaDecal.h
  11. 6
      Sources/Plasma/PubUtilLib/plDrawable/plSpaceTree.cpp
  12. 2
      Sources/Plasma/PubUtilLib/plGImage/plPNG.cpp
  13. 2
      Sources/Plasma/PubUtilLib/plGLight/plShadowSlave.h
  14. 2
      Sources/Plasma/PubUtilLib/plJPEG/plJPEG.cpp
  15. 2
      Sources/Plasma/PubUtilLib/plPipeline/plPlates.cpp
  16. 2
      Sources/Plasma/PubUtilLib/plPipeline/plPlates.h
  17. 14
      Sources/Plasma/PubUtilLib/plResMgr/plResManager.cpp

4
CMakeLists.txt

@ -8,6 +8,10 @@ endif(WIN32 AND NOT CYGWIN)
if(UNIX)
add_definitions(-DHS_BUILD_FOR_UNIX)
endif(UNIX)
if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
add_definitions(-std=c++0x)
endif()
# End HeadSpin Configuration
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")

6
Sources/Plasma/Apps/plPythonPack/PythonInterface.cpp

@ -55,7 +55,7 @@ void PythonInterface::initPython(std::string rootDir)
{
// initialize the Python stuff
// let Python do some intialization...
Py_SetProgramName("plasma");
Py_SetProgramName(const_cast<char*>("plasma"));
Py_NoSiteFlag = 1;
Py_IgnoreEnvironmentFlag = 1;
Py_Initialize();
@ -66,7 +66,7 @@ void PythonInterface::initPython(std::string rootDir)
// plasmaMod = PyImport_ImportModule("Plasma");
// create the StringIO for the stdout and stderr file
PycStringIO = (struct PycStringIO_CAPI*)PyCObject_Import("cStringIO", "cStringIO_CAPI");
PycStringIO = (struct PycStringIO_CAPI*)PyCObject_Import(const_cast<char*>("cStringIO"), const_cast<char*>("cStringIO_CAPI"));
stdFile = (*PycStringIO->NewOutput)(20000);
// if we need the builtins then find the builtin module
PyObject* sysmod = PyImport_ImportModule("sys");
@ -191,7 +191,7 @@ int PythonInterface::getOutputAndReset(char** line)
int size = PyString_Size( pyStr );
// reset the file back to zero
PyObject_CallMethod(stdFile,"reset","");
PyObject_CallMethod(stdFile, const_cast<char*>("reset"), const_cast<char*>(""));
/*
// check to see if the debug python module is loaded
if ( dbgOut != nil )

5
Sources/Plasma/CoreLib/HeadSpin.cpp

@ -169,8 +169,7 @@ void DebugMsg(const char fmt[], ...)
OutputDebugStringA("\n");
#endif
} else {
fprintf(stderr, msg);
fprintf(stderr, "\n");
fprintf(stderr, "%s\n", msg);
}
}
@ -315,6 +314,7 @@ int hsMessageBoxWithOwner(hsWindowHndl owner, const char message[], const char c
}
#endif
return hsMBoxCancel;
}
int hsMessageBoxWithOwner(hsWindowHndl owner, const wchar_t message[], const wchar_t caption[], int kind, int icon)
@ -367,6 +367,7 @@ int hsMessageBoxWithOwner(hsWindowHndl owner, const wchar_t message[], const wch
}
#endif
return hsMBoxCancel;
}
int hsMessageBox(const char message[], const char caption[], int kind, int icon)

20
Sources/Plasma/CoreLib/HeadSpin.h

@ -80,14 +80,8 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
# define NOMINMAX // Needed to prevent NxMath conflicts
# endif
# include <Windows.h>
#endif
// Just some fun typedefs...
typedef HWND hsWindowHndl;
typedef HINSTANCE hsWindowInst;
#else
typedef int32_t* hsWindowHndl;
typedef int32_t* hsWindowInst;
#endif // HS_BUILD_FOR_WIN32
//======================================
// We don't want the Windows.h min/max!
@ -112,6 +106,18 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
#include <stdint.h>
//======================================
// Just some fun typedefs...
//======================================
#ifdef HS_BUILD_FOR_WIN32
typedef HWND hsWindowHndl;
typedef HINSTANCE hsWindowInst;
#else
typedef int32_t* hsWindowHndl;
typedef int32_t* hsWindowInst;
#endif // HS_BUILD_FOR_WIN32
//======================================
// Basic macros
//======================================

54
Sources/Plasma/CoreLib/hsCpuID.cpp

@ -40,7 +40,13 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
*==LICENSE==*/
#include <intrin.h>
#if defined(_MSC_VER) || ((defined(_WIN32) || defined(_WIN64)) && defined(__INTEL_COMPILER))
# include <intrin.h>
# define MSC_COMPATIBLE
#elif defined(__GNUC__)
# include <cpuid.h>
# define GCC_COMPATIBLE
#endif
#include "hsCpuID.h"
@ -53,15 +59,43 @@ hsCpuId::hsCpuId() {
const unsigned int sse42_flag = 1<<20;
const unsigned int avx_flag = 1 << 28;
unsigned int cpu_info[4];
__cpuid((int*)cpu_info, 1);
has_sse1 = (cpu_info[3] & sse1_flag) || false;
has_sse2 = (cpu_info[3] & sse2_flag) || false;
has_sse3 = (cpu_info[2] & sse3_flag) || false;
has_ssse3 = (cpu_info[2] & ssse3_flag) || false;
has_sse41 = (cpu_info[2] & sse41_flag) || false;
has_sse42 = (cpu_info[2] & sse42_flag) || false;
has_avx = (cpu_info[2] & avx_flag) || false;
unsigned int ax = 0, bx = 0, cx = 0, dx = 0;
/**
* Portable implementation of CPUID, successfully tested with:
* - Microsoft Visual Studio 2010,
* - GNU GCC 4.5,
* - Intel C++ Compiler 12.0
* - Sun Studio 12,
* - AMD x86 Open64 Compiler Suite.
*
* Ref: http://primesieve.googlecode.com/svn-history/r388/trunk/soe/cpuid.h
*/
#if defined(MSC_COMPATIBLE)
int CPUInfo[4] = {ax, bx, cx, dx};
__cpuid(CPUInfo, 0);
// check if the CPU supports the cpuid instruction.
if (CPUInfo[0] != 0) {
__cpuid(CPUInfo, 1);
ax = CPUInfo[0];
bx = CPUInfo[1];
cx = CPUInfo[2];
dx = CPUInfo[3];
}
#elif defined(GCC_COMPATIBLE)
__get_cpuid(1, &ax, &bx, &cx, &dx);
#endif
has_sse1 = (dx & sse1_flag) || false;
has_sse2 = (dx & sse2_flag) || false;
has_sse3 = (cx & sse3_flag) || false;
has_ssse3 = (cx & ssse3_flag) || false;
has_sse41 = (cx & sse41_flag) || false;
has_sse42 = (cx & sse42_flag) || false;
has_avx = (cx & avx_flag) || false;
}
const hsCpuId& hsCpuId::instance()

2
Sources/Plasma/CoreLib/hsWide.h

@ -98,7 +98,7 @@ struct hsWide {
};
const hsWide kPosInfinity64 = { kPosInfinity32, 0xffffffff };
const hsWide kNegInfinity64 = { kNegInfinity32, 0 };
const hsWide kNegInfinity64 = { static_cast<int32_t>(kNegInfinity32), 0 };
/////////////////////// Inline implementations ///////////////////////

4
Sources/Plasma/CoreLib/plString.cpp

@ -361,7 +361,7 @@ plStringBuffer<wchar_t> plString::ToWchar() const
plStringBuffer<uint16_t> utf16 = ToUtf16();
return *reinterpret_cast<plStringBuffer<wchar_t>*>(&utf16);
#else
plStringBuffer<uint16_t> result;
plStringBuffer<wchar_t> result;
if (IsEmpty())
return result;
@ -527,7 +527,7 @@ plString plString::IFormat(const char *fmt, va_list vptr)
}
} else if (chars >= 256) {
va_copy(vptr, vptr_save);
std::auto_ptr<char> bigbuffer(new char[chars+1]);
std::unique_ptr<char> bigbuffer(new char[chars+1]);
vsnprintf(bigbuffer.get(), chars+1, fmt, vptr);
return plString::FromUtf8(bigbuffer.get(), chars);
}

2
Sources/Plasma/FeatureLib/pfAnimation/plLightModifier.cpp

@ -90,7 +90,7 @@ void plLightModifier::AddTarget(plSceneObject* so)
void plLightModifier::RemoveTarget(plSceneObject* so)
{
if( so = fTarget )
if (so == fTarget)
fLight = nil;
plSimpleModifier::RemoveTarget(so);
}

8
Sources/Plasma/PubUtilLib/plAudible/plWinAudible.cpp

@ -510,11 +510,11 @@ void plWinAudible::DeActivate()
bool plWinAudible::MsgReceive(plMessage* msg)
{
plGenRefMsg *refMsg;
if (refMsg = plGenRefMsg::ConvertNoRef(msg))
plGenRefMsg *refMsg = plGenRefMsg::ConvertNoRef(msg);
if (refMsg)
{
plSound *snd;
if (snd = plSound::ConvertNoRef(refMsg->GetRef()))
plSound *snd = plSound::ConvertNoRef(refMsg->GetRef());
if (snd)
{
int index = refMsg->fWhich;
if( refMsg->GetContext() & (plRefMsg::kOnCreate | plRefMsg::kOnRequest) )

1
Sources/Plasma/PubUtilLib/plDrawable/plDynaDecal.h

@ -94,6 +94,7 @@ protected:
friend class plDynaDecalMgr;
public:
virtual ~plDynaDecal() { }
virtual bool Age(double t, float ramp, float decay, float life) = 0;
};

6
Sources/Plasma/PubUtilLib/plDrawable/plSpaceTree.cpp

@ -291,7 +291,8 @@ void plSpaceTree::HarvestEnabledLeaves(plVolumeIsect* cull, const hsBitVector& c
if( IsEmpty() )
return;
if( fCullFunc = cull )
fCullFunc = cull;
if (fCullFunc)
IHarvestAndCullEnabledLeaves(fRoot, cache, list);
else
IHarvestEnabledLeaves(fRoot, cache, list);
@ -372,7 +373,8 @@ void plSpaceTree::HarvestLeaves(plVolumeIsect* cull, hsBitVector& list) const
{
if( !IsEmpty() )
{
if( fCullFunc = cull )
fCullFunc = cull;
if (fCullFunc)
IHarvestAndCullLeaves(fTree[fRoot], scratchTotVec, list);
else
IHarvestLeaves(fTree[fRoot], scratchTotVec, list);

2
Sources/Plasma/PubUtilLib/plGImage/plPNG.cpp

@ -191,7 +191,7 @@ plMipmap* plPNG::ReadFromFile(const wchar_t* fileName)
hsUNIXStream in;
if (!in.Open(fileName, L"rb")) {
return false;
return nil;
}
plMipmap* ret = IRead(&in);

2
Sources/Plasma/PubUtilLib/plGLight/plShadowSlave.h

@ -99,6 +99,8 @@ public:
kPositional = 0x80
};
virtual ~plShadowSlave() { }
void SetFlag(SlaveFlag f, bool on) { if(on) fFlags |= f; else fFlags &= ~f; }
bool HasFlag(SlaveFlag f) const { return 0 != (fFlags & f); }

2
Sources/Plasma/PubUtilLib/plJPEG/plJPEG.cpp

@ -246,7 +246,7 @@ plMipmap* plJPEG::ReadFromFile( const wchar_t *fileName )
hsRAMStream tempstream;
hsUNIXStream in;
if (!in.Open(fileName, L"rb"))
return false;
return nil;
// The stream reader for JPEGs expects a 32-bit size at the start,
// so insert that into the stream before passing it on

2
Sources/Plasma/PubUtilLib/plPipeline/plPlates.cpp

@ -551,7 +551,7 @@ void plGraphPlate::SetDataColors( const std::vector<uint32_t> & hexColors )
//// SetLabelText ////////////////////////////////////////////////////////////
void plGraphPlate::SetLabelText( char *text1, char *text2, char *text3, char *text4 )
void plGraphPlate::SetLabelText(const char *text1, const char *text2, const char *text3, const char *text4 )
{
std::vector<std::string> strings;
if( text1 != nil )

2
Sources/Plasma/PubUtilLib/plPipeline/plPlates.h

@ -170,7 +170,7 @@ class plGraphPlate : public plPlate
void SetDataRange( uint32_t min, uint32_t max, uint32_t width );
void SetDataLabels( uint32_t min, uint32_t max );
void SetLabelText( char *text1, char *text2 = nil, char *text3 = nil, char *text4 = nil );
void SetLabelText(const char *text1, const char *text2 = nil, const char *text3 = nil, const char *text4 = nil );
void SetLabelText( const std::vector<std::string> & text );
void ClearData( void );

14
Sources/Plasma/PubUtilLib/plResMgr/plResManager.cpp

@ -244,7 +244,7 @@ plRegistryPageNode* plResManager::FindSinglePage(const char* path) const
PageMap::const_iterator it;
for (it = fAllPages.begin(); it != fAllPages.end(); it++)
{
if (strcmpi((it->second)->GetPagePath(), path) == 0)
if (stricmp((it->second)->GetPagePath(), path) == 0)
return it->second;
}
@ -423,12 +423,18 @@ bool plResManager::IReadObject(plKeyImp* pKey, hsStream *stream)
ko = hsKeyedObject::ConvertNoRef(cre);
if (ko != nil)
{
kResMgrLog(4, ILog(4, " ...Creatable read and valid"));
}
else
{
kResMgrLog(3, ILog(3, " ...Creatable read from stream not keyed object!"));
}
if (fProgressProc != nil)
{
fProgressProc(plKey::Make(pKey));
}
}
else
{
@ -1651,8 +1657,8 @@ plRegistryPageNode* plResManager::FindPage(const char* age, const char* page) co
for (it = fAllPages.begin(); it != fAllPages.end(); ++it)
{
const plPageInfo& info = (it->second)->GetPageInfo();
if (strcmpi(info.GetAge(), age) == 0 &&
strcmpi(info.GetPage(), page) == 0)
if (stricmp(info.GetAge(), age) == 0 &&
stricmp(info.GetPage(), page) == 0)
return it->second;
}
@ -1766,7 +1772,7 @@ bool plResManager::IteratePages(plRegistryPageIterator* iterator, const char* ag
if (page->GetPageInfo().GetLocation() == plLocation::kGlobalFixedLoc)
continue;
if (!ageToRestrictTo || strcmpi(page->GetPageInfo().GetAge(), ageToRestrictTo) == 0)
if (!ageToRestrictTo || stricmp(page->GetPageInfo().GetAge(), ageToRestrictTo) == 0)
{
if (!iterator->EatPage(page))
{

Loading…
Cancel
Save