Merge pull request #39 from chuanweizhang2013/v3luaruntime

V3luaruntime
This commit is contained in:
cocoscodeide 2014-06-23 00:11:07 -07:00
commit 60f561b203
3 changed files with 173 additions and 15 deletions

View File

@ -0,0 +1,151 @@
// Protocol Buffers - Google's data interchange format
// Copyright 2012 Google Inc. All rights reserved.
// http://code.google.com/p/protobuf/
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
// * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// This file is an internal atomic implementation, use atomicops.h instead.
//
// LinuxKernelCmpxchg and Barrier_AtomicIncrement are from Google Gears.
#ifndef GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_ARM_GCC_H_
#define GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_ARM_GCC_H_
namespace google {
namespace protobuf {
namespace internal {
// 0xffff0fc0 is the hard coded address of a function provided by
// the kernel which implements an atomic compare-exchange. On older
// ARM architecture revisions (pre-v6) this may be implemented using
// a syscall. This address is stable, and in active use (hard coded)
// by at least glibc-2.7 and the Android C library.
typedef Atomic32 (*LinuxKernelCmpxchgFunc)(Atomic32 old_value,
Atomic32 new_value,
volatile Atomic32* ptr);
LinuxKernelCmpxchgFunc pLinuxKernelCmpxchg __attribute__((weak)) =
(LinuxKernelCmpxchgFunc) 0xffff0fc0;
typedef void (*LinuxKernelMemoryBarrierFunc)(void);
LinuxKernelMemoryBarrierFunc pLinuxKernelMemoryBarrier __attribute__((weak)) =
(LinuxKernelMemoryBarrierFunc) 0xffff0fa0;
inline Atomic32 NoBarrier_CompareAndSwap(volatile Atomic32* ptr,
Atomic32 old_value,
Atomic32 new_value) {
Atomic32 prev_value = *ptr;
do {
if (!pLinuxKernelCmpxchg(old_value, new_value,
const_cast<Atomic32*>(ptr))) {
return old_value;
}
prev_value = *ptr;
} while (prev_value == old_value);
return prev_value;
}
inline Atomic32 NoBarrier_AtomicExchange(volatile Atomic32* ptr,
Atomic32 new_value) {
Atomic32 old_value;
do {
old_value = *ptr;
} while (pLinuxKernelCmpxchg(old_value, new_value,
const_cast<Atomic32*>(ptr)));
return old_value;
}
inline Atomic32 NoBarrier_AtomicIncrement(volatile Atomic32* ptr,
Atomic32 increment) {
return Barrier_AtomicIncrement(ptr, increment);
}
inline Atomic32 Barrier_AtomicIncrement(volatile Atomic32* ptr,
Atomic32 increment) {
for (;;) {
// Atomic exchange the old value with an incremented one.
Atomic32 old_value = *ptr;
Atomic32 new_value = old_value + increment;
if (pLinuxKernelCmpxchg(old_value, new_value,
const_cast<Atomic32*>(ptr)) == 0) {
// The exchange took place as expected.
return new_value;
}
// Otherwise, *ptr changed mid-loop and we need to retry.
}
}
inline Atomic32 Acquire_CompareAndSwap(volatile Atomic32* ptr,
Atomic32 old_value,
Atomic32 new_value) {
return NoBarrier_CompareAndSwap(ptr, old_value, new_value);
}
inline Atomic32 Release_CompareAndSwap(volatile Atomic32* ptr,
Atomic32 old_value,
Atomic32 new_value) {
return NoBarrier_CompareAndSwap(ptr, old_value, new_value);
}
inline void NoBarrier_Store(volatile Atomic32* ptr, Atomic32 value) {
*ptr = value;
}
inline void MemoryBarrier() {
pLinuxKernelMemoryBarrier();
}
inline void Acquire_Store(volatile Atomic32* ptr, Atomic32 value) {
*ptr = value;
MemoryBarrier();
}
inline void Release_Store(volatile Atomic32* ptr, Atomic32 value) {
MemoryBarrier();
*ptr = value;
}
inline Atomic32 NoBarrier_Load(volatile const Atomic32* ptr) {
return *ptr;
}
inline Atomic32 Acquire_Load(volatile const Atomic32* ptr) {
Atomic32 value = *ptr;
MemoryBarrier();
return value;
}
inline Atomic32 Release_Load(volatile const Atomic32* ptr) {
MemoryBarrier();
return *ptr;
}
} // namespace internal
} // namespace protobuf
} // namespace google
#endif // GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_ARM_GCC_H_

View File

@ -4,7 +4,6 @@
extern const unsigned char __shinePngData[11776];
extern const unsigned char __portraitPngData[122214];
extern const unsigned char __playEnablePngData[20254];
extern const unsigned char __playDisablePngData[24174];
extern const unsigned char __landscapePngData[115832];
#endif // _RESDATA__H_

View File

@ -54,10 +54,10 @@ extern string getIPAddress();
//1M size
#define MAXPROTOLENGTH 1048576
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)
#define sleep(t) Sleep(t)
#elif(CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
#define usleep(t) Sleep(t)
#else
#include <unistd.h>
#define sleep(t) usleep(t)
#define usleep(t) usleep(t)
#endif
const char* getRuntimeVersion()
@ -364,7 +364,7 @@ bool CreateDir(const char *sPathName)
if(access(DirName, NULL)!=0 )
{
#ifdef _WIN32
if(mkdir(DirName/*, 0755*/)==-1)
if(_mkdir(DirName/*, 0755*/)==-1)
#else
if(mkdir(DirName, 0755)==-1)
#endif
@ -386,7 +386,7 @@ void recvBuf(int fd,char *pbuf,int bufsize)
while (startFlagLen != 0){
int recvlen = recv(fd, pbuf+bufsize-startFlagLen,startFlagLen ,0);
if (recvlen<=0) {
sleep(1);
usleep(1);
continue;
}
startFlagLen -= recvlen;
@ -458,7 +458,7 @@ void FileServer::loopReceiveFile()
int result= recv(fd, _protoBuf, recvLen,0);
//cocos2d::log("recv fullfilename = %s,file size:%d",recvDataBuf.fileProto.file_name().c_str(),result);
if (result<=0) {
sleep(1);
usleep(1);
continue;
}
memcpy(contentbuf+contentSize-recvTotalLen,_protoBuf,result);
@ -497,7 +497,7 @@ void FileServer::loopWriteFile()
int recvSize = _recvBufList.size();
_recvBufListMutex.unlock();
if(0 == recvSize){
sleep(500);
usleep(500);
continue;
}
@ -580,7 +580,7 @@ void FileServer::loopResponse()
int responseSize = _responseBufList.size();
_responseBufListMutex.unlock();
if(0 == responseSize){
sleep(500);
usleep(500);
continue;
}
@ -662,12 +662,12 @@ public:
shineSprite->setOpacity(0);
shineSprite->setPosition(Vec2(lanscaptX,lanscaptY));
Vector<FiniteTimeAction*> arrayOfActions;
arrayOfActions.pushBack(DelayTime::create(0.4));
arrayOfActions.pushBack(DelayTime::create(0.4f));
arrayOfActions.pushBack(FadeTo::create(0.8f,200));
arrayOfActions.pushBack(FadeTo::create(0.8f,255));
arrayOfActions.pushBack(FadeTo::create(0.8f,200));
arrayOfActions.pushBack(FadeTo::create(0.8f,0));
arrayOfActions.pushBack(DelayTime::create(0.4));
arrayOfActions.pushBack(DelayTime::create(0.4f));
Sequence * arrayAction = Sequence::create(arrayOfActions);
shineSprite->runAction(RepeatForever::create(Sequence::create(arrayOfActions)));
addChild(shineSprite,9998);
@ -675,7 +675,10 @@ public:
string strip = getIPAddress();
char szIPAddress[512]={0};
sprintf(szIPAddress, "IP: %s",strip.c_str());
auto IPlabel = Label::create(szIPAddress, fontName.c_str(), 72);
auto IPlabel = Label::create();
IPlabel->setString(szIPAddress);
IPlabel->setSystemFontName(fontName.c_str());
IPlabel->setSystemFontSize(72);
IPlabel->setAnchorPoint(Vec2(0,0));
int spaceSizex = 72;
int spaceSizey = 200;
@ -689,15 +692,20 @@ public:
char szVersion[1024]={0};
sprintf(szVersion,"runtimeVersion:%s \ncocos2dVersion:%s",getRuntimeVersion(),cocos2dVersion());
Label* verLable = Label::create(szVersion, fontName.c_str(), 24);
Label* verLable = Label::create();
verLable->setString(szVersion);
verLable->setSystemFontName(fontName.c_str());
verLable->setSystemFontSize(24);
verLable->setAnchorPoint(Vec2(0,0));
int width = verLable->getBoundingBox().size.width;
int height = verLable->getBoundingBox().size.height;
verLable->setPosition( Point(VisibleRect::right().x-width, VisibleRect::rightBottom().y) );
verLable->setAlignment(TextHAlignment::LEFT);
addChild(verLable, 9002);
_labelUploadFile = Label::create(_transferTip.c_str(), fontName.c_str(), 36);
_labelUploadFile = Label::create();
_labelUploadFile->setString(_transferTip);
_labelUploadFile->setSystemFontName(fontName.c_str());
_labelUploadFile->setSystemFontSize(36);
_labelUploadFile->setAnchorPoint(Vec2(0,0));
_labelUploadFile->setPosition( Point(VisibleRect::leftTop().x+spaceSizex, IPlabel->getPositionY()-spaceSizex) );
_labelUploadFile->setAlignment(TextHAlignment::LEFT);