mirror of https://github.com/axmolengine/axmol.git
synchrolize to master
This commit is contained in:
commit
d48da20b0f
|
@ -1,14 +1,30 @@
|
|||
#include "AppDelegate.h"
|
||||
|
||||
#include "cocos2d.h"
|
||||
#include "AppDelegate.h"
|
||||
//#include "SimpleAudioEngine.h"
|
||||
|
||||
#include "SimpleAudioEngine.h"
|
||||
|
||||
#include "SimpleAudioEngine.h"
|
||||
#define IPAD 0
|
||||
|
||||
#if IPAD
|
||||
#define CC_WIDTH 1024
|
||||
#define CC_HEIGHT 768
|
||||
#elif IPHONE_4
|
||||
#define CC_WIDTH 960
|
||||
#define CC_HEIGHT 640
|
||||
#else
|
||||
#define CC_WIDTH 480
|
||||
#define CC_HEIGHT 320
|
||||
#endif
|
||||
|
||||
USING_NS_CC;
|
||||
using namespace CocosDenshion;
|
||||
|
||||
AppDelegate::AppDelegate()
|
||||
:m_pLuaEngine(NULL)
|
||||
{
|
||||
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF|_CRTDBG_LEAK_CHECK_DF);
|
||||
}
|
||||
|
||||
AppDelegate::~AppDelegate()
|
||||
|
@ -30,7 +46,7 @@ bool AppDelegate::initInstance()
|
|||
// The HelloWorld is designed as HVGA.
|
||||
CCEGLView * pMainWnd = new CCEGLView();
|
||||
CC_BREAK_IF(! pMainWnd
|
||||
|| ! pMainWnd->Create(TEXT("cocos2d: Hello World"), 480, 320));
|
||||
|| ! pMainWnd->Create(TEXT("cocos2d: Hello World"), CC_WIDTH, CC_HEIGHT));
|
||||
|
||||
#endif // CC_PLATFORM_WIN32
|
||||
|
||||
|
|
|
@ -92,9 +92,18 @@ spriteDog = cocos2d.CCSprite:spriteWithSpriteFrame(frame0)
|
|||
spriteDog:setPosition(cocos2d.CCPoint(0, winSize.height/4*3))
|
||||
layerFarm:addChild(spriteDog)
|
||||
|
||||
animation = cocos2d.CCAnimation:animation()
|
||||
animation:addFrame(frame0)
|
||||
animation:addFrame(frame1)
|
||||
animation:setDelay(0.5)
|
||||
animation:setName('wait')
|
||||
--[[
|
||||
animFrames = cocos2d.CCMutableArray_CCSpriteFrame__:new(2)
|
||||
animFrames:addObject(frame0)
|
||||
animFrames:addObject(frame1)
|
||||
--animation = cocos2d.CCAnimation:animationWithName("wait", 0.5, animFrames)
|
||||
animation = cocos2d.CCAnimation:animationWithFrames(animFrames,0.5)
|
||||
--]]
|
||||
|
||||
animation = cocos2d.CCAnimation:animationWithFrames(animFrames, 0.5)
|
||||
|
||||
|
|
|
@ -1 +1 @@
|
|||
8575c43b860eea3c0f02d9543e58b74073e40e6d
|
||||
f75a8c50e01404209e0c065b8d040d973cfc0fc0
|
|
@ -1 +1 @@
|
|||
c1cdd4b0d66de5127dc37f73eb9895737ca3e18d
|
||||
f9ca064a5aba796aacdc647bb44c2f8a0658707c
|
|
@ -545,7 +545,44 @@ void CCDirector::end()
|
|||
{
|
||||
m_bPurgeDirecotorInNextLoop = true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void CCDirector::resetDirector()
|
||||
{
|
||||
// don't release the event handlers
|
||||
// They are needed in case the director is run again
|
||||
CCTouchDispatcher::sharedDispatcher()->removeAllDelegates();
|
||||
|
||||
if (m_pRunningScene)
|
||||
{
|
||||
m_pRunningScene->onExit();
|
||||
m_pRunningScene->cleanup();
|
||||
m_pRunningScene->release();
|
||||
}
|
||||
|
||||
m_pRunningScene = NULL;
|
||||
m_pNextScene = NULL;
|
||||
|
||||
// remove all objects, but don't release it.
|
||||
// runWithScene might be executed after 'end'.
|
||||
m_pobScenesStack->removeAllObjects();
|
||||
|
||||
stopAnimation();
|
||||
|
||||
CC_SAFE_RELEASE_NULL(m_pProjectionDelegate);
|
||||
|
||||
// purge bitmap cache
|
||||
CCLabelBMFont::purgeCachedData();
|
||||
|
||||
// purge all managers
|
||||
CCAnimationCache::purgeSharedAnimationCache();
|
||||
CCSpriteFrameCache::purgeSharedSpriteFrameCache();
|
||||
CCActionManager::sharedManager()->purgeSharedManager();
|
||||
CCScheduler::purgeSharedScheduler();
|
||||
CCTextureCache::purgeSharedTextureCache();
|
||||
}
|
||||
|
||||
|
||||
void CCDirector::purgeDirector()
|
||||
{
|
||||
// don't release the event handlers
|
||||
|
|
|
@ -570,6 +570,16 @@ void CCScheduler::unscheduleAllSelectors(void)
|
|||
{
|
||||
unscheduleUpdateForTarget(pEntry->target);
|
||||
}
|
||||
|
||||
// unschedule all script functions
|
||||
for (tHashScriptFuncEntry *elt = m_pHashForScriptFunctions; elt != NULL; )
|
||||
{
|
||||
tHashScriptFuncEntry *pNextElement = (tHashScriptFuncEntry *)elt->hh.next;
|
||||
elt->timer->release();
|
||||
HASH_DEL(m_pHashForScriptFunctions, elt);
|
||||
free(elt);
|
||||
elt = pNextElement;
|
||||
}
|
||||
}
|
||||
|
||||
void CCScheduler::unscheduleAllSelectorsForTarget(SelectorProtocol *pTarget)
|
||||
|
|
|
@ -376,6 +376,7 @@ public:
|
|||
public:
|
||||
/** returns a shared instance of the director */
|
||||
static CCDirector* sharedDirector(void);
|
||||
void resetDirector();
|
||||
|
||||
protected:
|
||||
|
||||
|
|
|
@ -281,6 +281,22 @@ public:
|
|||
return m_array.rbegin();
|
||||
}
|
||||
|
||||
CCMutableArrayIterator getLastValidIterator(void)
|
||||
{
|
||||
CCMutableArrayIterator iter;
|
||||
CCMutableArrayIterator ret;
|
||||
for (iter = m_array.begin(); iter != m_array.end(); ++iter)
|
||||
{
|
||||
ret = iter;
|
||||
if (! (*iter))
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* end is a keyword of lua, so should use other name
|
||||
* to export to lua
|
||||
|
|
|
@ -31,6 +31,7 @@ THE SOFTWARE.
|
|||
#include "CCObject.h"
|
||||
#include "CCMutableDictionary.h"
|
||||
#include "CCTexture2D.h"
|
||||
#include "selector_protocol.h"
|
||||
|
||||
#if CC_ENABLE_CACHE_TEXTTURE_DATA
|
||||
#include "CCImage.h"
|
||||
|
@ -38,25 +39,23 @@ THE SOFTWARE.
|
|||
#endif
|
||||
|
||||
namespace cocos2d {
|
||||
class CCAsyncObject;
|
||||
class CCLock;
|
||||
class CCImage;
|
||||
|
||||
typedef void (*fpAsyncCallback)(CCTexture2D*, void*);
|
||||
|
||||
/** @brief Singleton that handles the loading of textures
|
||||
* Once the texture is loaded, the next time it will return
|
||||
* a reference of the previously loaded texture reducing GPU & CPU memory
|
||||
*/
|
||||
class CC_DLL CCTextureCache : public CCObject
|
||||
class CC_DLL CCTextureCache : public SelectorProtocol, public CCObject
|
||||
{
|
||||
protected:
|
||||
CCMutableDictionary<std::string, CCTexture2D*> * m_pTextures;
|
||||
CCLock *m_pDictLock;
|
||||
CCLock *m_pContextLock;
|
||||
//pthread_mutex_t *m_pDictLock;
|
||||
|
||||
|
||||
private:
|
||||
// @todo void addImageWithAsyncObject(CCAsyncObject* async);
|
||||
void addImageAsyncCallBack(ccTime dt);
|
||||
|
||||
public:
|
||||
|
||||
|
@ -89,7 +88,7 @@ public:
|
|||
* @since v0.8
|
||||
*/
|
||||
|
||||
// @todo void addImageAsync(const char* filename, CCObject*target, fpAsyncCallback func);
|
||||
void addImageAsync(const char *path, SelectorProtocol *target, SEL_CallFuncO selector);
|
||||
|
||||
/* Returns a Texture2D object given an CGImageRef image
|
||||
* If the image was not previously loaded, it will create a new CCTexture2D object and it will return it.
|
||||
|
|
|
@ -181,4 +181,4 @@ It should work same as apples CFSwapInt32LittleToHost(..)
|
|||
#define CC_SWAP_INT32_BIG_TO_HOST(i) ((CC_HOST_IS_BIG_ENDIAN == true)? (i) : CC_SWAP32(i) )
|
||||
#define CC_SWAP_INT16_BIG_TO_HOST(i) ((CC_HOST_IS_BIG_ENDIAN == true)? (i): CC_SWAP16(i) )
|
||||
|
||||
#endif // __CCMACROS_H__
|
||||
#endif // __CCMACROS_H__
|
|
@ -81,7 +81,7 @@ namespace cocos2d{
|
|||
bool CCMenu::init()
|
||||
{
|
||||
va_list args;
|
||||
return initWithItems(0, args);
|
||||
return initWithItems(0, NULL);
|
||||
}
|
||||
|
||||
bool CCMenu::initWithItems(CCMenuItem* item, va_list args)
|
||||
|
|
|
@ -43,6 +43,9 @@ namespace cocos2d{
|
|||
const unsigned int kCurrentItem = 0xc0c05001;
|
||||
const unsigned int kZoomActionTag = 0xc0c05002;
|
||||
|
||||
const unsigned int kNormalTag = 0x1;
|
||||
const unsigned int kSelectedTag = 0x2;
|
||||
const unsigned int kDisableTag = 0x3;
|
||||
//
|
||||
// CCMenuItem
|
||||
//
|
||||
|
@ -387,7 +390,7 @@ namespace cocos2d{
|
|||
{
|
||||
if (var)
|
||||
{
|
||||
addChild(var);
|
||||
addChild(var, 0, kNormalTag);
|
||||
var->setAnchorPoint(ccp(0, 0));
|
||||
var->setIsVisible(true);
|
||||
}
|
||||
|
@ -407,7 +410,7 @@ namespace cocos2d{
|
|||
{
|
||||
if (var)
|
||||
{
|
||||
addChild(var);
|
||||
addChild(var, 0, kSelectedTag);
|
||||
var->setAnchorPoint(ccp(0, 0));
|
||||
var->setIsVisible(false);
|
||||
}
|
||||
|
@ -427,7 +430,7 @@ namespace cocos2d{
|
|||
{
|
||||
if (var)
|
||||
{
|
||||
addChild(var);
|
||||
addChild(var, 0, kDisableTag);
|
||||
var->setAnchorPoint(ccp(0, 0));
|
||||
var->setIsVisible(false);
|
||||
}
|
||||
|
|
|
@ -141,11 +141,15 @@ CCParticleSystem * CCParticleSystem::particleWithFile(const char *plistFile)
|
|||
}
|
||||
bool CCParticleSystem::initWithFile(const char *plistFile)
|
||||
{
|
||||
bool bRet = false;
|
||||
m_sPlistFile = CCFileUtils::fullPathFromRelativePath(plistFile);
|
||||
CCDictionary<std::string, CCObject*> *dict = CCFileUtils::dictionaryWithContentsOfFile(m_sPlistFile.c_str());
|
||||
CCDictionary<std::string, CCObject*> *dict = CCFileUtils::dictionaryWithContentsOfFileThreadSafe(m_sPlistFile.c_str());
|
||||
|
||||
CCAssert( dict != NULL, "Particles: file not found");
|
||||
return this->initWithDictionary(dict);
|
||||
bRet = this->initWithDictionary(dict);
|
||||
dict->release();
|
||||
|
||||
return bRet;
|
||||
}
|
||||
|
||||
bool CCParticleSystem::initWithDictionary(CCDictionary<std::string, CCObject*> *dictionary)
|
||||
|
|
|
@ -98,7 +98,9 @@ public:
|
|||
m_pCurDict = new CCDictionary<std::string, CCObject*>();
|
||||
if(! m_pRootDict)
|
||||
{
|
||||
// Because it will call m_pCurDict->release() later, so retain here.
|
||||
m_pRootDict = m_pCurDict;
|
||||
m_pRootDict->retain();
|
||||
}
|
||||
m_tState = SAX_DICT;
|
||||
|
||||
|
@ -120,7 +122,8 @@ public:
|
|||
CCDictionary<std::string, CCObject*>* pPreDict = m_tDictStack.top();
|
||||
pPreDict->setObject(m_pCurDict, m_sCurKey);
|
||||
}
|
||||
m_pCurDict->autorelease();
|
||||
|
||||
m_pCurDict->release();
|
||||
|
||||
// record the dict state
|
||||
m_tStateStack.push(m_tState);
|
||||
|
@ -285,7 +288,15 @@ std::string& CCFileUtils::ccRemoveHDSuffixFromFile(std::string& path)
|
|||
|
||||
CCDictionary<std::string, CCObject*> *CCFileUtils::dictionaryWithContentsOfFile(const char *pFileName)
|
||||
{
|
||||
CCDictMaker tMaker;
|
||||
CCDictionary<std::string, CCObject*> *ret = dictionaryWithContentsOfFileThreadSafe(pFileName);
|
||||
ret->autorelease();
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
CCDictionary<std::string, CCObject*> *CCFileUtils::dictionaryWithContentsOfFileThreadSafe(const char *pFileName)
|
||||
{
|
||||
CCDictMaker tMaker;
|
||||
return tMaker.dictionaryWithContentsOfFile(pFileName);
|
||||
}
|
||||
|
||||
|
|
|
@ -89,6 +89,12 @@ public:
|
|||
*/
|
||||
static CCDictionary<std::string, CCObject*> *dictionaryWithContentsOfFile(const char *pFileName);
|
||||
|
||||
/*
|
||||
@brief The same meaning as dictionaryWithContentsOfFile(), but it doesn't call autorelease, so the
|
||||
invoker should call release().
|
||||
*/
|
||||
static CCDictionary<std::string, CCObject*> *dictionaryWithContentsOfFileThreadSafe(const char *pFileName);
|
||||
|
||||
/**
|
||||
@brief Get the writeable path
|
||||
@return The path that can write/read file
|
||||
|
|
|
@ -24,22 +24,16 @@ THE SOFTWARE.
|
|||
|
||||
#include "CCThread.h"
|
||||
|
||||
#if CC_SUPPORT_MULTITHREAD
|
||||
NS_CC_BEGIN;
|
||||
|
||||
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)
|
||||
#include "win32/CCThread_win32.cpp"
|
||||
#endif // CC_PLATFORM_WIN32
|
||||
CCThread::~CCThread()
|
||||
{
|
||||
|
||||
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WOPHONE)
|
||||
#include "wophone/CCThread_wophone.cpp"
|
||||
#endif // CC_PLATFORM_WOPHONE
|
||||
}
|
||||
|
||||
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
|
||||
#include "android/CCThread_android.cpp"
|
||||
#endif // CC_PLATFORM_ANDROID
|
||||
void CCThread::createAutoreleasePool()
|
||||
{
|
||||
|
||||
#if (CC_TARGET_PLATFORM == CC_PLATFORM_BADA)
|
||||
#include "bada/CCThread_bada.cpp"
|
||||
#endif // CC_PLATFORM_BADA
|
||||
}
|
||||
|
||||
#endif // CC_SUPPORT_MULTITHREAD
|
||||
NS_CC_END;
|
||||
|
|
|
@ -26,41 +26,24 @@ THE SOFTWARE.
|
|||
#define __CC_PLATFORM_THREAD_H__
|
||||
|
||||
#include "CCCommon.h"
|
||||
#include "CCPlatformMacros.h"
|
||||
|
||||
NS_CC_BEGIN;
|
||||
|
||||
#if CC_SUPPORT_MULTITHREAD
|
||||
/**
|
||||
@brief The object for mutual-exclusion synchronization.
|
||||
|
||||
@warning Don't enter a CCLock twice in the same thread.
|
||||
*/
|
||||
class CC_DLL CCLock
|
||||
/* On iOS, should create autorelease pool when create a new thread
|
||||
* and release it when the thread end.
|
||||
*/
|
||||
class CC_DLL CCThread
|
||||
{
|
||||
public:
|
||||
CCLock();
|
||||
~CCLock();
|
||||
CCThread() : m_pAutoreasePool(0) {}
|
||||
~CCThread();
|
||||
|
||||
void lock();
|
||||
void unlock();
|
||||
void createAutoreleasePool();
|
||||
|
||||
private:
|
||||
class Impl;
|
||||
CCLock::Impl * m_pImp;
|
||||
void *m_pAutoreasePool;
|
||||
};
|
||||
#else // CC_SUPPORT_MULTITHREAD
|
||||
|
||||
class CC_DLL CCLock
|
||||
{
|
||||
public:
|
||||
CCLock() {}
|
||||
~CCLock() {}
|
||||
|
||||
void lock() {}
|
||||
void unlock() {}
|
||||
};
|
||||
|
||||
#endif // CC_SUPPORT_MULTITHREAD
|
||||
|
||||
NS_CC_END;
|
||||
|
||||
|
|
|
@ -1,76 +0,0 @@
|
|||
/****************************************************************************
|
||||
Copyright (c) 2010 cocos2d-x.org
|
||||
|
||||
http://www.cocos2d-x.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
****************************************************************************/
|
||||
|
||||
#if CCX_SUPPORT_MULTITHREAD
|
||||
|
||||
#include <semaphore.h>
|
||||
#include "CCThread.h"
|
||||
|
||||
NS_CC_BEGIN;
|
||||
|
||||
class CCLock::Impl
|
||||
{
|
||||
public:
|
||||
Impl()
|
||||
{
|
||||
sem_init(&m_sMutex, 0, 0);
|
||||
}
|
||||
|
||||
~Impl()
|
||||
{
|
||||
sem_destroy(&m_sMutex);
|
||||
}
|
||||
|
||||
sem_t m_sMutex;
|
||||
};
|
||||
|
||||
CCLock::CCLock()
|
||||
: m_pImp(new CCLock::Impl)
|
||||
{
|
||||
}
|
||||
|
||||
CCLock::~CCLock()
|
||||
{
|
||||
CC_SAFE_DELETE(m_pImp);
|
||||
}
|
||||
|
||||
void CCLock::lock()
|
||||
{
|
||||
if (m_pImp)
|
||||
{
|
||||
sem_wait(&m_pImp->m_sMutex);
|
||||
}
|
||||
}
|
||||
|
||||
void CCLock::unlock()
|
||||
{
|
||||
if (m_pImp)
|
||||
{
|
||||
sem_post(&m_pImp->m_sMutex);
|
||||
}
|
||||
}
|
||||
|
||||
NS_CC_END;
|
||||
|
||||
#endif // CCX_SUPPORT_MULTITHREAD
|
|
@ -291,7 +291,16 @@ namespace cocos2d {
|
|||
pRet->m_sString += pszFilename;
|
||||
return pRet->m_sString.c_str();
|
||||
}
|
||||
|
||||
CCDictionary<std::string, CCObject*> *CCFileUtils::dictionaryWithContentsOfFile(const char *pFileName)
|
||||
{
|
||||
CCDictionary<std::string, CCObject*> *ret = dictionaryWithContentsOfFileThreadSafe(pFileName);
|
||||
ret->autorelease();
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
CCDictionary<std::string, CCObject*> *CCFileUtils::dictionaryWithContentsOfFileThreadSafe(const char *pFileName)
|
||||
{
|
||||
NSString* pPath = [NSString stringWithUTF8String:pFileName];
|
||||
NSDictionary* pDict = [NSDictionary dictionaryWithContentsOfFile:pPath];
|
||||
|
@ -301,9 +310,10 @@ namespace cocos2d {
|
|||
id value = [pDict objectForKey:key];
|
||||
static_addValueToCCDict(key, value, pRet);
|
||||
}
|
||||
pRet->autorelease();
|
||||
|
||||
return pRet;
|
||||
}
|
||||
|
||||
unsigned char* CCFileUtils::getFileData(const char* pszFileName, const char* pszMode, unsigned long * pSize)
|
||||
{
|
||||
unsigned char * pBuffer = NULL;
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,178 @@
|
|||
/*
|
||||
* Module: sched.h
|
||||
*
|
||||
* Purpose:
|
||||
* Provides an implementation of POSIX realtime extensions
|
||||
* as defined in
|
||||
*
|
||||
* POSIX 1003.1b-1993 (POSIX.1b)
|
||||
*
|
||||
* --------------------------------------------------------------------------
|
||||
*
|
||||
* Pthreads-win32 - POSIX Threads Library for Win32
|
||||
* Copyright(C) 1998 John E. Bossom
|
||||
* Copyright(C) 1999,2005 Pthreads-win32 contributors
|
||||
*
|
||||
* Contact Email: rpj@callisto.canberra.edu.au
|
||||
*
|
||||
* The current list of contributors is contained
|
||||
* in the file CONTRIBUTORS included with the source
|
||||
* code distribution. The list can also be seen at the
|
||||
* following World Wide Web location:
|
||||
* http://sources.redhat.com/pthreads-win32/contributors.html
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library in the file COPYING.LIB;
|
||||
* if not, write to the Free Software Foundation, Inc.,
|
||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#ifndef _SCHED_H
|
||||
#define _SCHED_H
|
||||
|
||||
#undef PTW32_LEVEL
|
||||
|
||||
#if defined(_POSIX_SOURCE)
|
||||
#define PTW32_LEVEL 0
|
||||
/* Early POSIX */
|
||||
#endif
|
||||
|
||||
#if defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 199309
|
||||
#undef PTW32_LEVEL
|
||||
#define PTW32_LEVEL 1
|
||||
/* Include 1b, 1c and 1d */
|
||||
#endif
|
||||
|
||||
#if defined(INCLUDE_NP)
|
||||
#undef PTW32_LEVEL
|
||||
#define PTW32_LEVEL 2
|
||||
/* Include Non-Portable extensions */
|
||||
#endif
|
||||
|
||||
#define PTW32_LEVEL_MAX 3
|
||||
|
||||
#if !defined(PTW32_LEVEL)
|
||||
#define PTW32_LEVEL PTW32_LEVEL_MAX
|
||||
/* Include everything */
|
||||
#endif
|
||||
|
||||
|
||||
#if __GNUC__ && ! defined (__declspec)
|
||||
# error Please upgrade your GNU compiler to one that supports __declspec.
|
||||
#endif
|
||||
|
||||
/*
|
||||
* When building the DLL code, you should define PTW32_BUILD so that
|
||||
* the variables/functions are exported correctly. When using the DLL,
|
||||
* do NOT define PTW32_BUILD, and then the variables/functions will
|
||||
* be imported correctly.
|
||||
*/
|
||||
#ifndef PTW32_STATIC_LIB
|
||||
# ifdef PTW32_BUILD
|
||||
# define PTW32_DLLPORT __declspec (dllexport)
|
||||
# else
|
||||
# define PTW32_DLLPORT __declspec (dllimport)
|
||||
# endif
|
||||
#else
|
||||
# define PTW32_DLLPORT
|
||||
#endif
|
||||
|
||||
/*
|
||||
* This is a duplicate of what is in the autoconf config.h,
|
||||
* which is only used when building the pthread-win32 libraries.
|
||||
*/
|
||||
|
||||
#ifndef PTW32_CONFIG_H
|
||||
# if defined(WINCE)
|
||||
# define NEED_ERRNO
|
||||
# define NEED_SEM
|
||||
# endif
|
||||
# if defined(_UWIN) || defined(__MINGW32__)
|
||||
# define HAVE_MODE_T
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/*
|
||||
*
|
||||
*/
|
||||
|
||||
#if PTW32_LEVEL >= PTW32_LEVEL_MAX
|
||||
#ifdef NEED_ERRNO
|
||||
#include "need_errno.h"
|
||||
#else
|
||||
#include <errno.h>
|
||||
#endif
|
||||
#endif /* PTW32_LEVEL >= PTW32_LEVEL_MAX */
|
||||
|
||||
#if defined(__MINGW32__) || defined(_UWIN)
|
||||
#if PTW32_LEVEL >= PTW32_LEVEL_MAX
|
||||
/* For pid_t */
|
||||
# include <sys/types.h>
|
||||
/* Required by Unix 98 */
|
||||
# include <time.h>
|
||||
#endif /* PTW32_LEVEL >= PTW32_LEVEL_MAX */
|
||||
#else
|
||||
typedef int pid_t;
|
||||
#endif
|
||||
|
||||
/* Thread scheduling policies */
|
||||
|
||||
enum {
|
||||
SCHED_OTHER = 0,
|
||||
SCHED_FIFO,
|
||||
SCHED_RR,
|
||||
SCHED_MIN = SCHED_OTHER,
|
||||
SCHED_MAX = SCHED_RR
|
||||
};
|
||||
|
||||
struct sched_param {
|
||||
int sched_priority;
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif /* __cplusplus */
|
||||
|
||||
PTW32_DLLPORT int __cdecl sched_yield (void);
|
||||
|
||||
PTW32_DLLPORT int __cdecl sched_get_priority_min (int policy);
|
||||
|
||||
PTW32_DLLPORT int __cdecl sched_get_priority_max (int policy);
|
||||
|
||||
PTW32_DLLPORT int __cdecl sched_setscheduler (pid_t pid, int policy);
|
||||
|
||||
PTW32_DLLPORT int __cdecl sched_getscheduler (pid_t pid);
|
||||
|
||||
/*
|
||||
* Note that this macro returns ENOTSUP rather than
|
||||
* ENOSYS as might be expected. However, returning ENOSYS
|
||||
* should mean that sched_get_priority_{min,max} are
|
||||
* not implemented as well as sched_rr_get_interval.
|
||||
* This is not the case, since we just don't support
|
||||
* round-robin scheduling. Therefore I have chosen to
|
||||
* return the same value as sched_setscheduler when
|
||||
* SCHED_RR is passed to it.
|
||||
*/
|
||||
#define sched_rr_get_interval(_pid, _interval) \
|
||||
( errno = ENOTSUP, (int) -1 )
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* End of extern "C" */
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#undef PTW32_LEVEL
|
||||
#undef PTW32_LEVEL_MAX
|
||||
|
||||
#endif /* !_SCHED_H */
|
||||
|
|
@ -0,0 +1,166 @@
|
|||
/*
|
||||
* Module: semaphore.h
|
||||
*
|
||||
* Purpose:
|
||||
* Semaphores aren't actually part of the PThreads standard.
|
||||
* They are defined by the POSIX Standard:
|
||||
*
|
||||
* POSIX 1003.1b-1993 (POSIX.1b)
|
||||
*
|
||||
* --------------------------------------------------------------------------
|
||||
*
|
||||
* Pthreads-win32 - POSIX Threads Library for Win32
|
||||
* Copyright(C) 1998 John E. Bossom
|
||||
* Copyright(C) 1999,2005 Pthreads-win32 contributors
|
||||
*
|
||||
* Contact Email: rpj@callisto.canberra.edu.au
|
||||
*
|
||||
* The current list of contributors is contained
|
||||
* in the file CONTRIBUTORS included with the source
|
||||
* code distribution. The list can also be seen at the
|
||||
* following World Wide Web location:
|
||||
* http://sources.redhat.com/pthreads-win32/contributors.html
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library in the file COPYING.LIB;
|
||||
* if not, write to the Free Software Foundation, Inc.,
|
||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
*/
|
||||
#if !defined( SEMAPHORE_H )
|
||||
#define SEMAPHORE_H
|
||||
|
||||
#undef PTW32_LEVEL
|
||||
|
||||
#if defined(_POSIX_SOURCE)
|
||||
#define PTW32_LEVEL 0
|
||||
/* Early POSIX */
|
||||
#endif
|
||||
|
||||
#if defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 199309
|
||||
#undef PTW32_LEVEL
|
||||
#define PTW32_LEVEL 1
|
||||
/* Include 1b, 1c and 1d */
|
||||
#endif
|
||||
|
||||
#if defined(INCLUDE_NP)
|
||||
#undef PTW32_LEVEL
|
||||
#define PTW32_LEVEL 2
|
||||
/* Include Non-Portable extensions */
|
||||
#endif
|
||||
|
||||
#define PTW32_LEVEL_MAX 3
|
||||
|
||||
#if !defined(PTW32_LEVEL)
|
||||
#define PTW32_LEVEL PTW32_LEVEL_MAX
|
||||
/* Include everything */
|
||||
#endif
|
||||
|
||||
#if __GNUC__ && ! defined (__declspec)
|
||||
# error Please upgrade your GNU compiler to one that supports __declspec.
|
||||
#endif
|
||||
|
||||
/*
|
||||
* When building the DLL code, you should define PTW32_BUILD so that
|
||||
* the variables/functions are exported correctly. When using the DLL,
|
||||
* do NOT define PTW32_BUILD, and then the variables/functions will
|
||||
* be imported correctly.
|
||||
*/
|
||||
#ifndef PTW32_STATIC_LIB
|
||||
# ifdef PTW32_BUILD
|
||||
# define PTW32_DLLPORT __declspec (dllexport)
|
||||
# else
|
||||
# define PTW32_DLLPORT __declspec (dllimport)
|
||||
# endif
|
||||
#else
|
||||
# define PTW32_DLLPORT
|
||||
#endif
|
||||
|
||||
/*
|
||||
* This is a duplicate of what is in the autoconf config.h,
|
||||
* which is only used when building the pthread-win32 libraries.
|
||||
*/
|
||||
|
||||
#ifndef PTW32_CONFIG_H
|
||||
# if defined(WINCE)
|
||||
# define NEED_ERRNO
|
||||
# define NEED_SEM
|
||||
# endif
|
||||
# if defined(_UWIN) || defined(__MINGW32__)
|
||||
# define HAVE_MODE_T
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/*
|
||||
*
|
||||
*/
|
||||
|
||||
#if PTW32_LEVEL >= PTW32_LEVEL_MAX
|
||||
#ifdef NEED_ERRNO
|
||||
#include "need_errno.h"
|
||||
#else
|
||||
#include <errno.h>
|
||||
#endif
|
||||
#endif /* PTW32_LEVEL >= PTW32_LEVEL_MAX */
|
||||
|
||||
#define _POSIX_SEMAPHORES
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#ifndef HAVE_MODE_T
|
||||
typedef unsigned int mode_t;
|
||||
#endif
|
||||
|
||||
|
||||
typedef struct sem_t_ * sem_t;
|
||||
|
||||
PTW32_DLLPORT int __cdecl sem_init (sem_t * sem,
|
||||
int pshared,
|
||||
unsigned int value);
|
||||
|
||||
PTW32_DLLPORT int __cdecl sem_destroy (sem_t * sem);
|
||||
|
||||
PTW32_DLLPORT int __cdecl sem_trywait (sem_t * sem);
|
||||
|
||||
PTW32_DLLPORT int __cdecl sem_wait (sem_t * sem);
|
||||
|
||||
PTW32_DLLPORT int __cdecl sem_timedwait (sem_t * sem,
|
||||
const struct timespec * abstime);
|
||||
|
||||
PTW32_DLLPORT int __cdecl sem_post (sem_t * sem);
|
||||
|
||||
PTW32_DLLPORT int __cdecl sem_post_multiple (sem_t * sem,
|
||||
int count);
|
||||
|
||||
PTW32_DLLPORT int __cdecl sem_open (const char * name,
|
||||
int oflag,
|
||||
mode_t mode,
|
||||
unsigned int value);
|
||||
|
||||
PTW32_DLLPORT int __cdecl sem_close (sem_t * sem);
|
||||
|
||||
PTW32_DLLPORT int __cdecl sem_unlink (const char * name);
|
||||
|
||||
PTW32_DLLPORT int __cdecl sem_getvalue (sem_t * sem,
|
||||
int * sval);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* End of extern "C" */
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#undef PTW32_LEVEL
|
||||
#undef PTW32_LEVEL_MAX
|
||||
|
||||
#endif /* !SEMAPHORE_H */
|
|
@ -4,3 +4,4 @@ libpng 1.4.5beta04
|
|||
libxml2 2.7.7
|
||||
OGLES 2.08.28.0634
|
||||
zlib 1.2.5
|
||||
pthread 2.8.0
|
||||
|
|
|
@ -349,6 +349,7 @@ LRESULT CCEGLView::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
|
|||
else if (VK_ESCAPE == wParam)
|
||||
{
|
||||
// ESC input
|
||||
CCDirector::sharedDirector()->end();
|
||||
}
|
||||
}
|
||||
else if (wParam < 128)
|
||||
|
|
|
@ -1,70 +0,0 @@
|
|||
/****************************************************************************
|
||||
Copyright (c) 2010 cocos2d-x.org
|
||||
|
||||
http://www.cocos2d-x.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
****************************************************************************/
|
||||
|
||||
#if CCX_SUPPORT_MULTITHREAD
|
||||
|
||||
#include "ccxThread.h"
|
||||
|
||||
#include <Windows.h>
|
||||
|
||||
NS_CC_BEGIN;
|
||||
|
||||
class CCXLock::Impl
|
||||
{
|
||||
public:
|
||||
Impl() { InitializeCriticalSection(&m_cs); }
|
||||
~Impl() { DeleteCriticalSection(&m_cs); }
|
||||
|
||||
CRITICAL_SECTION m_cs;
|
||||
};
|
||||
|
||||
CCXLock::CCXLock()
|
||||
: m_pImp(new CCXLock::Impl)
|
||||
{
|
||||
}
|
||||
|
||||
CCXLock::~CCXLock()
|
||||
{
|
||||
CC_SAFE_DELETE(m_pImp);
|
||||
}
|
||||
|
||||
void CCXLock::lock()
|
||||
{
|
||||
if (m_pImp)
|
||||
{
|
||||
EnterCriticalSection(&m_pImp->m_cs);
|
||||
}
|
||||
}
|
||||
|
||||
void CCXLock::unlock()
|
||||
{
|
||||
if (m_pImp)
|
||||
{
|
||||
LeaveCriticalSection(&m_pImp->m_cs);
|
||||
}
|
||||
}
|
||||
|
||||
NS_CC_END;
|
||||
|
||||
#endif // CCX_SUPPORT_MULTITHREAD
|
|
@ -42,7 +42,7 @@
|
|||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\platform;..\platform\third_party\win32\iconv;..\platform\third_party\win32\zlib;..\platform\third_party\win32\libpng;..\platform\third_party\win32\libjpeg;..\platform\third_party\win32\libxml2;..\platform\third_party\win32\OGLES;..\include;.."
|
||||
AdditionalIncludeDirectories="..\platform;..\platform\third_party\win32\iconv;..\platform\third_party\win32\zlib;..\platform\third_party\win32\libpng;..\platform\third_party\win32\libjpeg;..\platform\third_party\win32\libxml2;..\platform\third_party\win32\pthread;..\platform\third_party\win32\OGLES;..\include;.."
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;COCOS2DXWIN32_EXPORTS;GL_GLEXT_PROTOTYPES"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
|
@ -65,7 +65,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="libEGL.lib libgles_cm.lib libxml2.lib libzlib.lib libpng.lib libjpeg.lib libiconv.lib"
|
||||
AdditionalDependencies="libEGL.lib libgles_cm.lib libxml2.lib libzlib.lib libpng.lib libjpeg.lib libiconv.lib pthreadVCE2.lib"
|
||||
OutputFile="$(OutDir)\$(ProjectName).dll"
|
||||
LinkIncremental="2"
|
||||
AdditionalLibraryDirectories=""$(OutDir)""
|
||||
|
|
|
@ -57,7 +57,7 @@
|
|||
</PreBuildEvent>
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>..\platform;..\platform\third_party\win32\iconv;..\platform\third_party\win32\zlib;..\platform\third_party\win32\libpng;..\platform\third_party\win32\libjpeg;..\platform\third_party\win32\libxml2;..\platform\third_party\win32\OGLES;..\include;..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>..\platform;..\platform\third_party\win32\iconv;..\platform\third_party\win32\zlib;..\platform\third_party\win32\libpng;..\platform\third_party\win32\libjpeg;..\platform\third_party\win32\pthread;..\platform\third_party\win32\libxml2;..\platform\third_party\win32\pthread;..\platform\third_party\win32\OGLES;..\include;..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;COCOS2DXWIN32_EXPORTS;GL_GLEXT_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
|
@ -74,7 +74,7 @@ xcopy /Y /Q "$(SolutionDir)cocos2dx\platform\third_party\win32\libraries\*.*" "$
|
|||
</Command>
|
||||
</PreLinkEvent>
|
||||
<Link>
|
||||
<AdditionalDependencies>libEGL.lib;libgles_cm.lib;libxml2.lib;libzlib.lib;libpng.lib;libjpeg.lib;libiconv.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libEGL.lib;libgles_cm.lib;libxml2.lib;libzlib.lib;libpng.lib;libjpeg.lib;libiconv.lib;pthreadVCE2.lib;pthreadVCE2.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>$(OutDir)$(ProjectName).dll</OutputFile>
|
||||
<AdditionalLibraryDirectories>$(OutDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
|
||||
|
@ -95,7 +95,7 @@ xcopy /Y /Q "$(SolutionDir)cocos2dx\platform\third_party\win32\libraries\*.*" "$
|
|||
</Command>
|
||||
</PreBuildEvent>
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>..\platform;..\platform\third_party\win32\iconv;..\platform\third_party\win32\zlib;..\platform\third_party\win32\libpng;..\platform\third_party\win32\libjpeg;..\platform\third_party\win32\libxml2;..\platform\third_party\win32\OGLES;..\include;..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>..\platform;..\platform\third_party\win32\iconv;..\platform\third_party\win32\zlib;..\platform\third_party\win32\libpng;..\platform\third_party\win32\libjpeg;..\platform\third_party\win32\pthread;..\platform\third_party\win32\libxml2;..\platform\third_party\win32\OGLES;..\include;..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;COCOS2DXWIN32_EXPORTS;GL_GLEXT_PROTOTYPES;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
|
@ -110,7 +110,7 @@ xcopy /Y /Q "$(SolutionDir)cocos2dx\platform\third_party\win32\libraries\*.*" "$
|
|||
</Command>
|
||||
</PreLinkEvent>
|
||||
<Link>
|
||||
<AdditionalDependencies>libEGL.lib;libgles_cm.lib;libxml2.lib;libzlib.lib;libpng.lib;libjpeg.lib;libiconv.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>libEGL.lib;libgles_cm.lib;libxml2.lib;libzlib.lib;libpng.lib;libjpeg.lib;libiconv.lib;pthreadVCE2.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>$(OutDir)$(ProjectName).dll</OutputFile>
|
||||
<AdditionalLibraryDirectories>$(OutDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<IgnoreSpecificDefaultLibraries> ;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
||||
|
|
|
@ -123,7 +123,7 @@
|
|||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\PRJ_TG3\Include;..\..\..\PRJ_TG3\Include\MTAPI;..\..\..\PRJ_TG3\Include\ThirdParty;..\..\..\PRJ_TG3\Include\TCOM;..\..\..\PRJ_TG3\TG3\Include;..\..\..\PRJ_TG3\TG3\TG3_Implement;..\..\..\PRJ_TG3\EOS_SYS;..\..\..\PRJ_TG3\Common\SoftSupport;..\..\..\PRJ_TG3\Common\ICU\Include"
|
||||
AdditionalIncludeDirectories="..\include;..\..\cocos2dx\platform;..\..\..\PRJ_TG3\Include;..\..\..\PRJ_TG3\Include\MTAPI;..\..\..\PRJ_TG3\Include\ThirdParty;..\..\..\PRJ_TG3\Include\TCOM;..\..\..\PRJ_TG3\TG3\Include;..\..\..\PRJ_TG3\TG3\TG3_Implement;..\..\..\PRJ_TG3\EOS_SYS;..\..\..\PRJ_TG3\Common\SoftSupport;..\..\..\PRJ_TG3\Common\ICU\Include"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;_TRANZDA_VM_;SS_MAKEDLL"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
|
|
|
@ -197,9 +197,11 @@ void CCSpriteFrameCache::addSpriteFramesWithDictionary(CCDictionary<std::string,
|
|||
void CCSpriteFrameCache::addSpriteFramesWithFile(const char *pszPlist, CCTexture2D *pobTexture)
|
||||
{
|
||||
const char *pszPath = CCFileUtils::fullPathFromRelativePath(pszPlist);
|
||||
CCDictionary<std::string, CCObject*> *dict = CCFileUtils::dictionaryWithContentsOfFile(pszPath);
|
||||
CCDictionary<std::string, CCObject*> *dict = CCFileUtils::dictionaryWithContentsOfFileThreadSafe(pszPath);
|
||||
|
||||
addSpriteFramesWithDictionary(dict, pobTexture);
|
||||
|
||||
dict->release();
|
||||
}
|
||||
|
||||
void CCSpriteFrameCache::addSpriteFramesWithFile(const char* plist, const char* textureFileName)
|
||||
|
@ -220,7 +222,7 @@ void CCSpriteFrameCache::addSpriteFramesWithFile(const char* plist, const char*
|
|||
void CCSpriteFrameCache::addSpriteFramesWithFile(const char *pszPlist)
|
||||
{
|
||||
const char *pszPath = CCFileUtils::fullPathFromRelativePath(pszPlist);
|
||||
CCDictionary<std::string, CCObject*> *dict = CCFileUtils::dictionaryWithContentsOfFile(pszPath);
|
||||
CCDictionary<std::string, CCObject*> *dict = CCFileUtils::dictionaryWithContentsOfFileThreadSafe(pszPath);
|
||||
|
||||
string texturePath("");
|
||||
|
||||
|
@ -261,6 +263,8 @@ void CCSpriteFrameCache::addSpriteFramesWithFile(const char *pszPlist)
|
|||
{
|
||||
CCLOG("cocos2d: CCSpriteFrameCache: Couldn't load texture");
|
||||
}
|
||||
|
||||
dict->release();
|
||||
}
|
||||
|
||||
void CCSpriteFrameCache::addSpriteFrame(CCSpriteFrame *pobFrame, const char *pszFrameName)
|
||||
|
@ -316,9 +320,11 @@ void CCSpriteFrameCache::removeSpriteFrameByName(const char *pszName)
|
|||
void CCSpriteFrameCache::removeSpriteFramesFromFile(const char* plist)
|
||||
{
|
||||
const char* path = CCFileUtils::fullPathFromRelativePath(plist);
|
||||
CCDictionary<std::string, CCObject*>* dict = CCFileUtils::dictionaryWithContentsOfFile(path);
|
||||
CCDictionary<std::string, CCObject*>* dict = CCFileUtils::dictionaryWithContentsOfFileThreadSafe(path);
|
||||
|
||||
removeSpriteFramesFromDictionary((CCDictionary<std::string, CCSpriteFrame*>*)dict);
|
||||
|
||||
dict->release();
|
||||
}
|
||||
|
||||
void CCSpriteFrameCache::removeSpriteFramesFromDictionary(CCDictionary<std::string, CCSpriteFrame*> *dictionary)
|
||||
|
|
|
@ -23,6 +23,7 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
****************************************************************************/
|
||||
#define COCOS2D_DEBUG 1
|
||||
|
||||
#include <stack>
|
||||
#include <string>
|
||||
|
@ -36,24 +37,70 @@ THE SOFTWARE.
|
|||
#include "CCFileUtils.h"
|
||||
#include "CCImage.h"
|
||||
#include "support/ccUtils.h"
|
||||
#include "CCScheduler.h"
|
||||
#include "pthread.h"
|
||||
#include "CCThread.h"
|
||||
|
||||
namespace cocos2d {
|
||||
|
||||
class CCAsyncObject : CCObject
|
||||
typedef struct _AsyncStruct
|
||||
{
|
||||
public:
|
||||
fpAsyncCallback m_pfnCallback;
|
||||
CCObject* m_pTarget;
|
||||
std::string * m_pData;
|
||||
public:
|
||||
CCAsyncObject();
|
||||
~CCAsyncObject()
|
||||
std::string filename;
|
||||
SelectorProtocol *target;
|
||||
SEL_CallFuncO selector;
|
||||
} AsyncStruct;
|
||||
|
||||
static cocos2d::CCImage* s_pImageAsync;
|
||||
// only allow one loading thread at a time
|
||||
static pthread_mutex_t s_loadingThreadMutex;
|
||||
// condition
|
||||
static pthread_cond_t s_condition;
|
||||
static pthread_mutex_t s_conditionMutex;
|
||||
static AsyncStruct *s_pAsyncObject;
|
||||
|
||||
static void* loadImage(void* data)
|
||||
{
|
||||
// create autorelease pool for iOS
|
||||
CCThread thread;
|
||||
thread.createAutoreleasePool();
|
||||
|
||||
if (! ((AsyncStruct*)data)->filename.c_str())
|
||||
{
|
||||
CCLOGINFO("cocos2d: deallocing CCAsyncObject.");
|
||||
CC_SAFE_DELETE(m_pTarget);
|
||||
CC_SAFE_DELETE(m_pData);
|
||||
return 0;
|
||||
}
|
||||
};
|
||||
|
||||
// one loading thread at a time
|
||||
pthread_mutex_lock(&s_loadingThreadMutex);
|
||||
|
||||
s_pAsyncObject = (AsyncStruct*)data;
|
||||
const char *filename = s_pAsyncObject->filename.c_str();
|
||||
|
||||
CCLOG("thread 0x%x is loading image %s", pthread_self(), filename);
|
||||
|
||||
CCImage *tmpImage = new CCImage();
|
||||
tmpImage->initWithImageFile(filename);
|
||||
s_pImageAsync = tmpImage;
|
||||
|
||||
/* Wait for rendering thread to comsume the image.
|
||||
* The implemntation of pthread_cond_wait() of win32 has a bug, it can not
|
||||
* wait the condition at first time.
|
||||
*/
|
||||
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)
|
||||
static bool firstRun = true;
|
||||
if (firstRun)
|
||||
{
|
||||
pthread_cond_wait(&s_condition, &s_conditionMutex);
|
||||
firstRun = false;
|
||||
}
|
||||
#endif
|
||||
pthread_cond_wait(&s_condition, &s_conditionMutex);
|
||||
|
||||
CCLOG("thread 0x%x has pass the condition, new loading thread is avalable", pthread_self());
|
||||
|
||||
pthread_mutex_unlock(&s_loadingThreadMutex);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
// implementation CCTextureCache
|
||||
|
||||
|
@ -73,8 +120,6 @@ CCTextureCache::CCTextureCache()
|
|||
CCAssert(g_sharedTextureCache == NULL, "Attempted to allocate a second instance of a singleton.");
|
||||
|
||||
m_pTextures = new CCMutableDictionary<std::string, CCTexture2D*>();
|
||||
m_pDictLock = new CCLock();
|
||||
m_pContextLock = new CCLock();
|
||||
}
|
||||
|
||||
CCTextureCache::~CCTextureCache()
|
||||
|
@ -82,8 +127,6 @@ CCTextureCache::~CCTextureCache()
|
|||
CCLOGINFO("cocos2d: deallocing CCTextureCache.");
|
||||
|
||||
CC_SAFE_RELEASE(m_pTextures);
|
||||
CC_SAFE_DELETE(m_pDictLock);
|
||||
CC_SAFE_DELETE(m_pContextLock);
|
||||
}
|
||||
|
||||
void CCTextureCache::purgeSharedTextureCache()
|
||||
|
@ -99,77 +142,80 @@ char * CCTextureCache::description()
|
|||
return ret;
|
||||
}
|
||||
|
||||
|
||||
// TextureCache - Add Images
|
||||
/* @todo EAGLContext
|
||||
void CCTextureCache::addImageWithAsyncObject(CCAsyncObject* async)
|
||||
void CCTextureCache::addImageAsync(const char *path, SelectorProtocol *target, SEL_CallFuncO selector)
|
||||
{
|
||||
|
||||
CCAutoreleasePool *autoreleasepool = [[CCAutoreleasePool alloc] init];
|
||||
CCAssert(path != NULL, "TextureCache: fileimage MUST not be NULL");
|
||||
|
||||
// textures will be created on the main OpenGL context
|
||||
// it seems that in SDK 2.2.x there can't be 2 threads creating textures at the same time
|
||||
// the lock is used for this purpose: issue #472
|
||||
[contextLock lock];
|
||||
if( auxEAGLcontext == nil ) {
|
||||
auxEAGLcontext = [[EAGLContext alloc]
|
||||
initWithAPI:kEAGLRenderingAPIOpenGLES1
|
||||
sharegroup:[[[[CCDirector sharedDirector] openGLView] context] sharegroup]];
|
||||
|
||||
if( ! auxEAGLcontext )
|
||||
CCLOG(@"cocos2d: TextureCache: Could not create EAGL context");
|
||||
}
|
||||
|
||||
if( [EAGLContext setCurrentContext:auxEAGLcontext] ) {
|
||||
|
||||
// load / create the texture
|
||||
CCTexture2D *tex = [self addImage:async.data];
|
||||
|
||||
// The callback will be executed on the main thread
|
||||
[async.target performSelectorOnMainThread:async.selector withObject:tex waitUntilDone:NO];
|
||||
|
||||
[EAGLContext setCurrentContext:nil];
|
||||
} else {
|
||||
CCLOG(@"cocos2d: TetureCache: EAGLContext error");
|
||||
}
|
||||
[contextLock unlock];
|
||||
|
||||
[autoreleasepool release];
|
||||
}*/
|
||||
|
||||
/* @todo selector, NSThread
|
||||
void CCTextureCache::addImageAsync(const char* filename, CCObject *target, fpAsyncCallback func)
|
||||
{
|
||||
CCAssert(filename != NULL , "TextureCache: fileimage MUST not be nill");
|
||||
CCTexture2D *texture = NULL;
|
||||
|
||||
// optimization
|
||||
|
||||
CCTexture2D * tex;
|
||||
|
||||
if ( (tex = m_pTextures->objectForKey(filename)) )
|
||||
std::string pathKey = path;
|
||||
CCFileUtils::ccRemoveHDSuffixFromFile(pathKey);
|
||||
|
||||
{
|
||||
pathKey = CCFileUtils::fullPathFromRelativePath(pathKey.c_str());
|
||||
texture = m_pTextures->objectForKey(pathKey);
|
||||
|
||||
target->
|
||||
std::string fullpath = pathKey;
|
||||
if (texture = m_pTextures->objectForKey(pathKey))
|
||||
{
|
||||
(target->*selector)(texture);
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
// lazy init
|
||||
static bool firstRun = true;
|
||||
if (firstRun)
|
||||
{
|
||||
pthread_mutex_init(&s_loadingThreadMutex, NULL);
|
||||
pthread_mutex_init(&s_conditionMutex, NULL);
|
||||
pthread_cond_init(&s_condition, NULL);
|
||||
s_pImageAsync = NULL;
|
||||
|
||||
|
||||
if( (tex=[textures objectForKey: filename] ) ) {
|
||||
[target performSelector:selector withObject:tex];
|
||||
return;
|
||||
}
|
||||
|
||||
// schedule the load
|
||||
|
||||
CCAsyncObject *asyncObject = [[CCAsyncObject alloc] init];
|
||||
asyncObject.selector = selector;
|
||||
asyncObject.target = target;
|
||||
asyncObject.data = filename;
|
||||
|
||||
[NSThread detachNewThreadSelector:@selector(addImageWithAsyncObject:) toTarget:self withObject:asyncObject];
|
||||
[asyncObject release];
|
||||
}*/
|
||||
CCScheduler::sharedScheduler()->scheduleSelector(schedule_selector(CCTextureCache::addImageAsyncCallBack), this, 1.0f, false);
|
||||
|
||||
firstRun = false;
|
||||
}
|
||||
|
||||
AsyncStruct *data = new AsyncStruct();
|
||||
data->filename = fullpath.c_str();
|
||||
data->target = target;
|
||||
data->selector = selector;
|
||||
|
||||
// load image in a new thread
|
||||
pthread_t p;
|
||||
pthread_create(&p, NULL, loadImage, (void*)data);
|
||||
}
|
||||
|
||||
void CCTextureCache::addImageAsyncCallBack(ccTime dt)
|
||||
{
|
||||
// the image is generated in loading thread
|
||||
if (s_pImageAsync != NULL)
|
||||
{
|
||||
|
||||
SelectorProtocol *target = s_pAsyncObject->target;
|
||||
SEL_CallFuncO selector = s_pAsyncObject->selector;
|
||||
const char* filename = s_pAsyncObject->filename.c_str();
|
||||
|
||||
// generate texture in render thread
|
||||
CCTexture2D *texture = new CCTexture2D();
|
||||
texture->initWithImage(s_pImageAsync);
|
||||
|
||||
// cache the texture
|
||||
m_pTextures->setObject(texture, filename);
|
||||
texture->autorelease();
|
||||
|
||||
(target->*selector)(texture);
|
||||
|
||||
// the object is newed in addImageAsync() and will be assigned in the loading thread
|
||||
delete s_pAsyncObject;
|
||||
|
||||
delete s_pImageAsync;
|
||||
s_pImageAsync = NULL;
|
||||
|
||||
pthread_cond_signal(&s_condition);
|
||||
}
|
||||
}
|
||||
|
||||
CCTexture2D * CCTextureCache::addImage(const char * path)
|
||||
{
|
||||
|
@ -180,7 +226,7 @@ CCTexture2D * CCTextureCache::addImage(const char * path)
|
|||
// MUTEX:
|
||||
// Needed since addImageAsync calls this method from a different thread
|
||||
|
||||
m_pDictLock->lock();
|
||||
//pthread_mutex_lock(m_pDictLock);
|
||||
|
||||
// remove possible -HD suffix to prevent caching the same image twice (issue #1040)
|
||||
std::string pathKey = path;
|
||||
|
@ -263,7 +309,8 @@ CCTexture2D * CCTextureCache::addImage(const char * path)
|
|||
|
||||
} while (0);
|
||||
}
|
||||
m_pDictLock->unlock();
|
||||
|
||||
//pthread_mutex_unlock(m_pDictLock);
|
||||
return texture;
|
||||
}
|
||||
|
||||
|
@ -335,30 +382,7 @@ CCTexture2D * CCTextureCache::addPVRImage(const char* path)
|
|||
return tex;
|
||||
}
|
||||
|
||||
/* @todo CGImageRef
|
||||
-(CCTexture2D*) addCGImage: (CGImageRef) imageref forKey: (string & )key
|
||||
{
|
||||
CCAssert(imageref != nil, @"TextureCache: image MUST not be nill");
|
||||
|
||||
CCTexture2D * tex = nil;
|
||||
|
||||
// If key is nil, then create a new texture each time
|
||||
if( key && (tex=[textures objectForKey: key] ) ) {
|
||||
return tex;
|
||||
}
|
||||
|
||||
// prevents overloading the autorelease pool
|
||||
UIImage *image = [[UIImage alloc] initWithCGImage:imageref];
|
||||
tex = [[CCTexture2D alloc] initWithImage: image];
|
||||
[image release];
|
||||
|
||||
if(tex && key)
|
||||
[textures setObject: tex forKey:key];
|
||||
else
|
||||
CCLOG(@"cocos2d: Couldn't add CGImage in CCTextureCache");
|
||||
|
||||
return [tex autorelease];
|
||||
}*/
|
||||
CCTexture2D* CCTextureCache::addUIImage(CCImage *image, const char *key)
|
||||
{
|
||||
CCAssert(image != NULL && key != NULL, "TextureCache: image MUST not be nill");
|
||||
|
@ -367,7 +391,7 @@ CCTexture2D* CCTextureCache::addUIImage(CCImage *image, const char *key)
|
|||
// textureForKey() use full path,so the key should be full path
|
||||
std::string forKey = CCFileUtils::fullPathFromRelativePath(key);
|
||||
|
||||
m_pDictLock->lock();
|
||||
//m_pDictLock->lock();
|
||||
|
||||
do
|
||||
{
|
||||
|
@ -393,7 +417,7 @@ CCTexture2D* CCTextureCache::addUIImage(CCImage *image, const char *key)
|
|||
|
||||
} while (0);
|
||||
|
||||
m_pDictLock->unlock();
|
||||
//m_pDictLock->unlock();
|
||||
|
||||
return texture;
|
||||
}
|
||||
|
|
|
@ -1 +1 @@
|
|||
445474251b15e1ea13cdde8cd5a9fc2776f16a77
|
||||
dd5941759f1e46eade02974d86ba7cbe12e19a17
|
|
@ -26,6 +26,11 @@ THE SOFTWARE.
|
|||
|
||||
using namespace cocos2d;
|
||||
|
||||
LuaEngine::~LuaEngine()
|
||||
{
|
||||
CCLuaScriptModule::purgeSharedLuaScriptModule();
|
||||
}
|
||||
|
||||
// functions for excute touch event
|
||||
bool LuaEngine::executeTouchEvent(const char *pszFuncName, CCTouch *pTouch)
|
||||
{
|
||||
|
|
|
@ -30,6 +30,8 @@ THE SOFTWARE.
|
|||
class LuaEngine : public cocos2d::CCScriptEngineProtocol
|
||||
{
|
||||
public:
|
||||
virtual ~LuaEngine();
|
||||
|
||||
// functions for excute touch event
|
||||
virtual bool executeTouchEvent(const char *pszFuncName, cocos2d::CCTouch *pTouch);
|
||||
virtual bool executeTouchesEvent(const char *pszFuncName, cocos2d::CCSet *pTouches);
|
||||
|
|
|
@ -1 +1 @@
|
|||
3aab8d3693dcaba52bbe6cf1d88bd085701c71bb
|
||||
84d1a5cd21bd26c8e2f08241d504b59fe40defc9
|
|
@ -1 +1 @@
|
|||
2905515c8c42c8a1603230ed28549aa28e4ae3f1
|
||||
36888561783556c80b0635d13bbdcc7e285fa0f3
|
|
@ -1 +1 @@
|
|||
b59f29f9bd284c46876e7ecc47b74bfaf8a00aa6
|
||||
866c5fd880bbb121951818d47d13a4ee914279ad
|
|
@ -1 +1 @@
|
|||
60da72586f63e425b1e85a7a0cee1d798e59c843
|
||||
6b542917dfd2180ff6c55bca6cd7b30c64c4a300
|
|
@ -1,6 +1,6 @@
|
|||
#!/bin/bash
|
||||
# set params
|
||||
ANDROID_NDK_ROOT=/cygdrive/d/programe/android/ndk/android-ndk-r6
|
||||
ANDROID_NDK_ROOT=/cygdrive/d/programe/android/ndk/android-ndk-r5
|
||||
COCOS2DX_ROOT=/cygdrive/e/cocos2d-x
|
||||
TESTS_ROOT=$COCOS2DX_ROOT/tests/test.android
|
||||
|
||||
|
|
|
@ -76,6 +76,7 @@ LOCAL_SRC_FILES := main.cpp \
|
|||
../../../tests/SceneTest/SceneTest.cpp \
|
||||
../../../tests/SchedulerTest/SchedulerTest.cpp \
|
||||
../../../tests/SpriteTest/SpriteTest.cpp \
|
||||
../../../tests/TextureCacheTest/TextureCacheTest.cpp \
|
||||
../../../tests/Texture2dTest/Texture2dTest.cpp \
|
||||
../../../tests/TileMapTest/TileMapTest.cpp \
|
||||
../../../tests/TouchesTest/Ball.cpp \
|
||||
|
|
|
@ -1 +1 @@
|
|||
3df87510e48dfe7e5c768dcef3f4fd6eb99a129b
|
||||
0031a29bb750c1b41620d51dbb052daa823edcd4
|
|
@ -89,6 +89,7 @@ OBJECTS = ../tests/AccelerometerTest/AccelerometerTest.o \
|
|||
../tests/SchedulerTest/SchedulerTest.o \
|
||||
../tests/SpriteTest/SpriteTest.o \
|
||||
../tests/TextInputTest/TextInputTest.o \
|
||||
../tests/TextureCacheTest/TextureCacheTest.o \
|
||||
../tests/Texture2dTest/Texture2dTest.o \
|
||||
../tests/TileMapTest/TileMapTest.o \
|
||||
../tests/TouchesTest/Ball.o \
|
||||
|
|
|
@ -1107,6 +1107,18 @@
|
|||
>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="TextureCacheTest"
|
||||
>
|
||||
<File
|
||||
RelativePath="..\tests\TextureCacheTest\TextureCacheTest.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\tests\TextureCacheTest\TextureCacheTest.h"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
</Filter>
|
||||
</Filter>
|
||||
</Files>
|
||||
|
|
|
@ -124,6 +124,7 @@
|
|||
<ClCompile Include="..\tests\DirectorTest\DirectorTest.cpp" />
|
||||
<ClCompile Include="..\tests\FontTest\FontTest.cpp" />
|
||||
<ClCompile Include="..\tests\Texture2dTest\Texture2dTest.cpp" />
|
||||
<ClCompile Include="..\tests\TextureCacheTest\TextureCacheTest.cpp" />
|
||||
<ClCompile Include="main.cpp" />
|
||||
<ClCompile Include="..\AppDelegate.cpp" />
|
||||
<ClCompile Include="..\tests\controller.cpp" />
|
||||
|
@ -210,6 +211,7 @@
|
|||
<ClInclude Include="..\tests\DirectorTest\DirectorTest.h" />
|
||||
<ClInclude Include="..\tests\FontTest\FontTest.h" />
|
||||
<ClInclude Include="..\tests\Texture2dTest\Texture2dTest.h" />
|
||||
<ClInclude Include="..\tests\TextureCacheTest\TextureCacheTest.h" />
|
||||
<ClInclude Include="main.h" />
|
||||
<ClInclude Include="..\AppDelegate.h" />
|
||||
<ClInclude Include="..\tests\controller.h" />
|
||||
|
|
|
@ -136,6 +136,9 @@
|
|||
<Filter Include="classes\tests\CurrentLanguageTest">
|
||||
<UniqueIdentifier>{178ed769-203d-47d0-92a4-de8668c4df58}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="classes\tests\TextureCacheTest">
|
||||
<UniqueIdentifier>{17b9b23c-1ef6-466e-a2ab-c558f4015698}</UniqueIdentifier>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="main.cpp">
|
||||
|
@ -390,6 +393,9 @@
|
|||
<ClCompile Include="..\tests\CurrentLanguageTest\CurrentLanguageTest.cpp">
|
||||
<Filter>classes\tests\CurrentLanguageTest</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\tests\TextureCacheTest\TextureCacheTest.cpp">
|
||||
<Filter>classes\tests\TextureCacheTest</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="main.h">
|
||||
|
@ -704,5 +710,8 @@
|
|||
<ClInclude Include="..\tests\CurrentLanguageTest\CurrentLanguageTest.h">
|
||||
<Filter>classes\tests\CurrentLanguageTest</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\tests\TextureCacheTest\TextureCacheTest.h">
|
||||
<Filter>classes\tests\TextureCacheTest</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
</Project>
|
|
@ -0,0 +1,143 @@
|
|||
// enable log
|
||||
#define COCOS2D_DEBUG 1
|
||||
|
||||
#include "TextureCacheTest.h"
|
||||
|
||||
TextureCacheTest::TextureCacheTest()
|
||||
: m_nNumberOfSprites(24)
|
||||
, m_nNumberOfLoadedSprites(0)
|
||||
{
|
||||
CCSize size = CCDirector::sharedDirector()->getWinSize();
|
||||
|
||||
m_pLabelLoading = CCLabelTTF::labelWithString("loading...", "Arial", 15);
|
||||
m_pLabelPercent = CCLabelTTF::labelWithString("%0", "Arial", 15);
|
||||
|
||||
m_pLabelLoading->setPosition(CCPointMake(size.width / 2, size.height / 2 - 20));
|
||||
m_pLabelPercent->setPosition(CCPointMake(size.width / 2, size.height / 2 + 20));
|
||||
|
||||
this->addChild(m_pLabelLoading);
|
||||
this->addChild(m_pLabelPercent);
|
||||
|
||||
// load textrues
|
||||
CCTextureCache::sharedTextureCache()->addImageAsync("Images/HelloWorld.png", this, callfuncO_selector(TextureCacheTest::loadingCallBack));
|
||||
CCTextureCache::sharedTextureCache()->addImageAsync("Images/grossini.png", this, callfuncO_selector(TextureCacheTest::loadingCallBack));
|
||||
CCTextureCache::sharedTextureCache()->addImageAsync("Images/grossini_dance_01.png", this, callfuncO_selector(TextureCacheTest::loadingCallBack));
|
||||
CCTextureCache::sharedTextureCache()->addImageAsync("Images/grossini_dance_02.png", this, callfuncO_selector(TextureCacheTest::loadingCallBack));
|
||||
CCTextureCache::sharedTextureCache()->addImageAsync("Images/grossini_dance_03.png", this, callfuncO_selector(TextureCacheTest::loadingCallBack));
|
||||
CCTextureCache::sharedTextureCache()->addImageAsync("Images/grossini_dance_04.png", this, callfuncO_selector(TextureCacheTest::loadingCallBack));
|
||||
CCTextureCache::sharedTextureCache()->addImageAsync("Images/grossini_dance_05.png", this, callfuncO_selector(TextureCacheTest::loadingCallBack));
|
||||
CCTextureCache::sharedTextureCache()->addImageAsync("Images/grossini_dance_06.png", this, callfuncO_selector(TextureCacheTest::loadingCallBack));
|
||||
CCTextureCache::sharedTextureCache()->addImageAsync("Images/grossini_dance_07.png", this, callfuncO_selector(TextureCacheTest::loadingCallBack));
|
||||
CCTextureCache::sharedTextureCache()->addImageAsync("Images/grossini_dance_08.png", this, callfuncO_selector(TextureCacheTest::loadingCallBack));
|
||||
CCTextureCache::sharedTextureCache()->addImageAsync("Images/grossini_dance_09.png", this, callfuncO_selector(TextureCacheTest::loadingCallBack));
|
||||
CCTextureCache::sharedTextureCache()->addImageAsync("Images/grossini_dance_10.png", this, callfuncO_selector(TextureCacheTest::loadingCallBack));
|
||||
CCTextureCache::sharedTextureCache()->addImageAsync("Images/grossini_dance_11.png", this, callfuncO_selector(TextureCacheTest::loadingCallBack));
|
||||
CCTextureCache::sharedTextureCache()->addImageAsync("Images/grossini_dance_12.png", this, callfuncO_selector(TextureCacheTest::loadingCallBack));
|
||||
CCTextureCache::sharedTextureCache()->addImageAsync("Images/grossini_dance_13.png", this, callfuncO_selector(TextureCacheTest::loadingCallBack));
|
||||
CCTextureCache::sharedTextureCache()->addImageAsync("Images/grossini_dance_14.png", this, callfuncO_selector(TextureCacheTest::loadingCallBack));
|
||||
CCTextureCache::sharedTextureCache()->addImageAsync("Images/background1.png", this, callfuncO_selector(TextureCacheTest::loadingCallBack));
|
||||
CCTextureCache::sharedTextureCache()->addImageAsync("Images/background2.png", this, callfuncO_selector(TextureCacheTest::loadingCallBack));
|
||||
CCTextureCache::sharedTextureCache()->addImageAsync("Images/background3.png", this, callfuncO_selector(TextureCacheTest::loadingCallBack));
|
||||
CCTextureCache::sharedTextureCache()->addImageAsync("Images/background1-hd.png", this, callfuncO_selector(TextureCacheTest::loadingCallBack));
|
||||
CCTextureCache::sharedTextureCache()->addImageAsync("Images/background2-hd.png", this, callfuncO_selector(TextureCacheTest::loadingCallBack));
|
||||
CCTextureCache::sharedTextureCache()->addImageAsync("Images/background3-hd.png", this, callfuncO_selector(TextureCacheTest::loadingCallBack));
|
||||
CCTextureCache::sharedTextureCache()->addImageAsync("Images/blocks.png", this, callfuncO_selector(TextureCacheTest::loadingCallBack));
|
||||
CCTextureCache::sharedTextureCache()->addImageAsync("Images/blocks-hd.png", this, callfuncO_selector(TextureCacheTest::loadingCallBack));
|
||||
}
|
||||
|
||||
void TextureCacheTest::loadingCallBack(CCObject *obj)
|
||||
{
|
||||
++m_nNumberOfLoadedSprites;
|
||||
char tmp[10];
|
||||
sprintf(tmp,"%%%d", (int)(((float)m_nNumberOfLoadedSprites / m_nNumberOfSprites) * 100));
|
||||
m_pLabelPercent->setString(tmp);
|
||||
|
||||
if (m_nNumberOfLoadedSprites == m_nNumberOfSprites)
|
||||
{
|
||||
this->removeChild(m_pLabelLoading, true);
|
||||
this->removeChild(m_pLabelPercent, true);
|
||||
addSprite();
|
||||
}
|
||||
}
|
||||
|
||||
void TextureCacheTest::addSprite()
|
||||
{
|
||||
CCSize size = CCDirector::sharedDirector()->getWinSize();
|
||||
|
||||
// create sprites
|
||||
|
||||
CCSprite *bg = CCSprite::spriteWithFile("Images/HelloWorld.png");
|
||||
bg->setPosition(CCPointMake(size.width / 2, size.height / 2));
|
||||
|
||||
CCSprite *s1 = CCSprite::spriteWithFile("Images/grossini.png");
|
||||
CCSprite *s2 = CCSprite::spriteWithFile("Images/grossini_dance_01.png");
|
||||
CCSprite *s3 = CCSprite::spriteWithFile("Images/grossini_dance_02.png");
|
||||
CCSprite *s4 = CCSprite::spriteWithFile("Images/grossini_dance_03.png");
|
||||
CCSprite *s5 = CCSprite::spriteWithFile("Images/grossini_dance_04.png");
|
||||
CCSprite *s6 = CCSprite::spriteWithFile("Images/grossini_dance_05.png");
|
||||
CCSprite *s7 = CCSprite::spriteWithFile("Images/grossini_dance_06.png");
|
||||
CCSprite *s8 = CCSprite::spriteWithFile("Images/grossini_dance_07.png");
|
||||
CCSprite *s9 = CCSprite::spriteWithFile("Images/grossini_dance_08.png");
|
||||
CCSprite *s10 = CCSprite::spriteWithFile("Images/grossini_dance_09.png");
|
||||
CCSprite *s11 = CCSprite::spriteWithFile("Images/grossini_dance_10.png");
|
||||
CCSprite *s12 = CCSprite::spriteWithFile("Images/grossini_dance_11.png");
|
||||
CCSprite *s13 = CCSprite::spriteWithFile("Images/grossini_dance_12.png");
|
||||
CCSprite *s14 = CCSprite::spriteWithFile("Images/grossini_dance_13.png");
|
||||
CCSprite *s15 = CCSprite::spriteWithFile("Images/grossini_dance_14.png");
|
||||
|
||||
// just loading textures to slow down
|
||||
CCSprite *s16 = CCSprite::spriteWithFile("Images/background1.png");
|
||||
CCSprite *s17 = CCSprite::spriteWithFile("Images/background2.png");
|
||||
CCSprite *s18 = CCSprite::spriteWithFile("Images/background3.png");
|
||||
CCSprite *s19 = CCSprite::spriteWithFile("Images/background1-hd.png");
|
||||
CCSprite *s20 = CCSprite::spriteWithFile("Images/background2-hd.png");
|
||||
CCSprite *s21 = CCSprite::spriteWithFile("Images/background3-hd.png");
|
||||
CCSprite *s22 = CCSprite::spriteWithFile("Images/blocks.png");
|
||||
CCSprite *s23 = CCSprite::spriteWithFile("Images/blocks-hd.png");
|
||||
|
||||
s1->setPosition(CCPointMake(50, 50));
|
||||
s2->setPosition(CCPointMake(60, 50));
|
||||
s3->setPosition(CCPointMake(70, 50));
|
||||
s4->setPosition(CCPointMake(80, 50));
|
||||
s5->setPosition(CCPointMake(90, 50));
|
||||
s6->setPosition(CCPointMake(100, 50));
|
||||
|
||||
s7->setPosition(CCPointMake(50, 180));
|
||||
s8->setPosition(CCPointMake(60, 180));
|
||||
s9->setPosition(CCPointMake(70, 180));
|
||||
s10->setPosition(CCPointMake(80, 180));
|
||||
s11->setPosition(CCPointMake(90, 180));
|
||||
s12->setPosition(CCPointMake(100, 180));
|
||||
|
||||
s13->setPosition(CCPointMake(50, 270));
|
||||
s14->setPosition(CCPointMake(60, 270));
|
||||
s15->setPosition(CCPointMake(70, 270));
|
||||
|
||||
this->addChild(bg);
|
||||
|
||||
this->addChild(s1);
|
||||
this->addChild(s2);
|
||||
this->addChild(s3);
|
||||
this->addChild(s4);
|
||||
this->addChild(s5);
|
||||
this->addChild(s6);
|
||||
this->addChild(s7);
|
||||
this->addChild(s8);
|
||||
this->addChild(s9);
|
||||
this->addChild(s10);
|
||||
this->addChild(s11);
|
||||
this->addChild(s12);
|
||||
this->addChild(s13);
|
||||
this->addChild(s14);
|
||||
this->addChild(s15);
|
||||
}
|
||||
|
||||
|
||||
void TextureCacheTestScene::runThisTest()
|
||||
{
|
||||
CCLayer* pLayer = new TextureCacheTest();
|
||||
addChild(pLayer);
|
||||
|
||||
CCDirector::sharedDirector()->replaceScene(this);
|
||||
pLayer->release();
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
#ifndef _TEXTURECACHE_TEST_H_
|
||||
#define _TEXTURECACHE_TEST_H_
|
||||
|
||||
#include "cocos2d.h"
|
||||
#include "../testBasic.h"
|
||||
|
||||
class TextureCacheTest : public CCLayer
|
||||
{
|
||||
public:
|
||||
TextureCacheTest();
|
||||
void addSprite();
|
||||
void loadingCallBack(cocos2d::CCObject *obj);
|
||||
|
||||
private:
|
||||
cocos2d::CCLabelTTF *m_pLabelLoading;
|
||||
cocos2d::CCLabelTTF *m_pLabelPercent;
|
||||
int m_nNumberOfSprites;
|
||||
int m_nNumberOfLoadedSprites;
|
||||
|
||||
};
|
||||
|
||||
class TextureCacheTestScene : public TestScene
|
||||
{
|
||||
public:
|
||||
virtual void runThisTest();
|
||||
};
|
||||
|
||||
#endif // _TEXTURECACHE_TEST_H_
|
|
@ -116,7 +116,7 @@ static TestScene* CreateTestScene(int nIdx)
|
|||
pScene = new FontTestScene(); break;
|
||||
case TEST_CURRENT_LANGUAGE:
|
||||
pScene = new CurrentLanguageTestScene(); break;
|
||||
break;
|
||||
case TEST_TEXTURECACHE: pScene = new TextureCacheTestScene(); break;
|
||||
#endif
|
||||
|
||||
default:
|
||||
|
|
|
@ -44,6 +44,7 @@
|
|||
#include "Texture2dTest/Texture2dTest.h"
|
||||
#include "FontTest/FontTest.h"
|
||||
#include "CurrentLanguageTest/CurrentLanguageTest.h"
|
||||
#include "TextureCacheTest/TextureCacheTest.h"
|
||||
|
||||
#if (CC_TARGET_PLATFORM != CC_PLATFORM_AIRPLAY)
|
||||
#include "ChipmunkTest/cocos2dChipmunkDemo.h"
|
||||
|
@ -98,6 +99,7 @@ enum
|
|||
TEST_BUGS,
|
||||
TEST_FONTS,
|
||||
TEST_CURRENT_LANGUAGE,
|
||||
TEST_TEXTURECACHE,
|
||||
|
||||
TESTS_COUNT,
|
||||
};
|
||||
|
@ -144,6 +146,7 @@ const std::string g_aTestNames[TESTS_COUNT] = {
|
|||
"BugsTest",
|
||||
"FontTest",
|
||||
"CurrentLanguageTest",
|
||||
"TextureCacheTest"
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -114,6 +114,7 @@ $pfile "CCMenu.pkg"
|
|||
$pfile "CCMenuItem.pkg"
|
||||
$pfile "CCMotionStreak.pkg"
|
||||
|
||||
$pfile "CCParticleSystem.pkg"
|
||||
|
||||
$pfile "CCCommon.pkg"
|
||||
$pfile "CCFileUtils.pkg"
|
||||
|
||||
$pfile "CCParticleSystem.pkg"
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
1. Generating the lua<-->C bindings with tolua++
|
||||
tolua++.exe -tCocos2d -o LuaCocos2d.cpp Cocos2d.pkg
|
||||
|
||||
An ant script has been provided to generate the relevant files, to do this after
|
||||
modifying the .pkg files you should use the following command in this directory:
|
||||
|
|
Loading…
Reference in New Issue