2018-01-29 16:25:32 +08:00
|
|
|
/****************************************************************************
|
|
|
|
Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd.
|
|
|
|
|
|
|
|
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.
|
|
|
|
****************************************************************************/
|
|
|
|
|
2013-01-28 15:17:20 +08:00
|
|
|
#include "FileUtilsTest.h"
|
|
|
|
|
2015-04-09 12:23:47 +08:00
|
|
|
USING_NS_CC;
|
|
|
|
|
2015-04-03 14:31:03 +08:00
|
|
|
FileUtilsTests::FileUtilsTests()
|
|
|
|
{
|
|
|
|
ADD_TEST_CASE(TestResolutionDirectories);
|
|
|
|
ADD_TEST_CASE(TestSearchPath);
|
|
|
|
ADD_TEST_CASE(TestFilenameLookup);
|
|
|
|
ADD_TEST_CASE(TestIsFileExist);
|
2015-07-13 22:44:40 +08:00
|
|
|
ADD_TEST_CASE(TestIsDirectoryExist);
|
2015-04-03 14:31:03 +08:00
|
|
|
ADD_TEST_CASE(TestFileFuncs);
|
|
|
|
ADD_TEST_CASE(TestDirectoryFuncs);
|
2015-07-07 14:06:59 +08:00
|
|
|
ADD_TEST_CASE(TestWriteString);
|
2016-04-26 13:37:22 +08:00
|
|
|
ADD_TEST_CASE(TestGetContents);
|
2015-07-07 14:06:59 +08:00
|
|
|
ADD_TEST_CASE(TestWriteData);
|
|
|
|
ADD_TEST_CASE(TestWriteValueMap);
|
|
|
|
ADD_TEST_CASE(TestWriteValueVector);
|
2015-07-13 22:44:40 +08:00
|
|
|
ADD_TEST_CASE(TestUnicodePath);
|
2017-01-13 10:05:46 +08:00
|
|
|
ADD_TEST_CASE(TestIsFileExistAsync);
|
|
|
|
ADD_TEST_CASE(TestIsDirectoryExistAsync);
|
|
|
|
ADD_TEST_CASE(TestFileFuncsAsync);
|
|
|
|
ADD_TEST_CASE(TestWriteStringAsync);
|
|
|
|
ADD_TEST_CASE(TestWriteDataAsync);
|
2019-05-09 10:21:25 +08:00
|
|
|
ADD_TEST_CASE(TestListFiles);
|
|
|
|
ADD_TEST_CASE(TestIsFileExistRejectFolder);
|
2013-01-28 15:17:20 +08:00
|
|
|
}
|
|
|
|
|
2014-03-26 14:54:50 +08:00
|
|
|
// TestResolutionDirectories
|
2013-01-28 15:17:20 +08:00
|
|
|
|
|
|
|
void TestResolutionDirectories::onEnter()
|
|
|
|
{
|
|
|
|
FileUtilsDemo::onEnter();
|
2013-08-16 16:05:27 +08:00
|
|
|
auto sharedFileUtils = FileUtils::getInstance();
|
2013-01-28 15:17:20 +08:00
|
|
|
|
2013-12-19 03:45:30 +08:00
|
|
|
std::string ret;
|
2015-07-07 14:06:59 +08:00
|
|
|
|
2013-01-28 15:17:20 +08:00
|
|
|
sharedFileUtils->purgeCachedEntries();
|
2017-03-22 11:17:52 +08:00
|
|
|
_defaultSearchPathArray = sharedFileUtils->getOriginalSearchPaths();
|
2013-12-19 03:45:30 +08:00
|
|
|
std::vector<std::string> searchPaths = _defaultSearchPathArray;
|
2013-01-28 15:17:20 +08:00
|
|
|
searchPaths.insert(searchPaths.begin(), "Misc");
|
2013-01-29 09:56:38 +08:00
|
|
|
sharedFileUtils->setSearchPaths(searchPaths);
|
2015-07-07 14:06:59 +08:00
|
|
|
|
2013-06-15 14:03:30 +08:00
|
|
|
_defaultResolutionsOrderArray = sharedFileUtils->getSearchResolutionsOrder();
|
2013-12-19 03:45:30 +08:00
|
|
|
std::vector<std::string> resolutionsOrder = _defaultResolutionsOrderArray;
|
2013-01-28 15:17:20 +08:00
|
|
|
|
|
|
|
resolutionsOrder.insert(resolutionsOrder.begin(), "resources-ipadhd");
|
|
|
|
resolutionsOrder.insert(resolutionsOrder.begin()+1, "resources-ipad");
|
|
|
|
resolutionsOrder.insert(resolutionsOrder.begin()+2, "resources-widehd");
|
|
|
|
resolutionsOrder.insert(resolutionsOrder.begin()+3, "resources-wide");
|
|
|
|
resolutionsOrder.insert(resolutionsOrder.begin()+4, "resources-hd");
|
|
|
|
resolutionsOrder.insert(resolutionsOrder.begin()+5, "resources-iphone");
|
2015-07-07 14:06:59 +08:00
|
|
|
|
2013-01-28 15:17:20 +08:00
|
|
|
sharedFileUtils->setSearchResolutionsOrder(resolutionsOrder);
|
2015-07-07 14:06:59 +08:00
|
|
|
|
2013-01-28 15:17:20 +08:00
|
|
|
for( int i=1; i<7; i++) {
|
2015-07-15 12:04:48 +08:00
|
|
|
auto filename = StringUtils::format("test%d.txt", i);
|
|
|
|
ret = sharedFileUtils->fullPathForFilename(filename);
|
|
|
|
log("%s -> %s", filename.c_str(), ret.c_str());
|
2013-01-28 15:17:20 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void TestResolutionDirectories::onExit()
|
|
|
|
{
|
2013-08-16 16:05:27 +08:00
|
|
|
auto sharedFileUtils = FileUtils::getInstance();
|
2015-07-07 14:06:59 +08:00
|
|
|
|
|
|
|
// reset search path
|
|
|
|
sharedFileUtils->setSearchPaths(_defaultSearchPathArray);
|
2013-06-15 14:03:30 +08:00
|
|
|
sharedFileUtils->setSearchResolutionsOrder(_defaultResolutionsOrderArray);
|
2013-01-28 15:17:20 +08:00
|
|
|
FileUtilsDemo::onExit();
|
|
|
|
}
|
|
|
|
|
2013-12-19 05:52:10 +08:00
|
|
|
std::string TestResolutionDirectories::title() const
|
2013-01-28 15:17:20 +08:00
|
|
|
{
|
|
|
|
return "FileUtils: resolutions in directories";
|
|
|
|
}
|
|
|
|
|
2013-12-19 05:52:10 +08:00
|
|
|
std::string TestResolutionDirectories::subtitle() const
|
2013-01-28 15:17:20 +08:00
|
|
|
{
|
|
|
|
return "See the console";
|
|
|
|
}
|
|
|
|
|
2014-03-26 14:54:50 +08:00
|
|
|
// TestSearchPath
|
2013-01-28 15:17:20 +08:00
|
|
|
|
|
|
|
void TestSearchPath::onEnter()
|
|
|
|
{
|
|
|
|
FileUtilsDemo::onEnter();
|
2013-08-16 16:05:27 +08:00
|
|
|
auto sharedFileUtils = FileUtils::getInstance();
|
2015-07-07 14:06:59 +08:00
|
|
|
|
2013-12-19 03:45:30 +08:00
|
|
|
std::string ret;
|
2015-07-07 14:06:59 +08:00
|
|
|
|
2013-01-28 15:17:20 +08:00
|
|
|
sharedFileUtils->purgeCachedEntries();
|
2017-03-22 11:17:52 +08:00
|
|
|
_defaultSearchPathArray = sharedFileUtils->getOriginalSearchPaths();
|
2013-12-19 03:45:30 +08:00
|
|
|
std::vector<std::string> searchPaths = _defaultSearchPathArray;
|
|
|
|
std::string writablePath = sharedFileUtils->getWritablePath();
|
|
|
|
std::string fileName = writablePath+"external.txt";
|
2013-01-28 17:43:53 +08:00
|
|
|
char szBuf[100] = "Hello Cocos2d-x!";
|
|
|
|
FILE* fp = fopen(fileName.c_str(), "wb");
|
|
|
|
if (fp)
|
|
|
|
{
|
2013-06-01 08:06:11 +08:00
|
|
|
size_t ret = fwrite(szBuf, 1, strlen(szBuf), fp);
|
2013-07-28 10:22:12 +08:00
|
|
|
CCASSERT(ret != 0, "fwrite function returned zero value");
|
2013-01-28 17:43:53 +08:00
|
|
|
fclose(fp);
|
2013-07-28 10:22:12 +08:00
|
|
|
if (ret != 0)
|
2013-07-24 06:20:22 +08:00
|
|
|
log("Writing file to writable path succeed.");
|
2013-01-28 17:43:53 +08:00
|
|
|
}
|
2015-07-07 14:06:59 +08:00
|
|
|
|
2013-01-28 17:43:53 +08:00
|
|
|
searchPaths.insert(searchPaths.begin(), writablePath);
|
|
|
|
searchPaths.insert(searchPaths.begin()+1, "Misc/searchpath1");
|
|
|
|
searchPaths.insert(searchPaths.begin()+2, "Misc/searchpath2");
|
2013-01-29 09:56:38 +08:00
|
|
|
sharedFileUtils->setSearchPaths(searchPaths);
|
2015-07-07 14:06:59 +08:00
|
|
|
|
2013-06-15 14:03:30 +08:00
|
|
|
_defaultResolutionsOrderArray = sharedFileUtils->getSearchResolutionsOrder();
|
2013-12-19 03:45:30 +08:00
|
|
|
std::vector<std::string> resolutionsOrder = _defaultResolutionsOrderArray;
|
2015-07-07 14:06:59 +08:00
|
|
|
|
2013-01-28 15:17:20 +08:00
|
|
|
resolutionsOrder.insert(resolutionsOrder.begin(), "resources-ipad");
|
|
|
|
sharedFileUtils->setSearchResolutionsOrder(resolutionsOrder);
|
2015-07-07 14:06:59 +08:00
|
|
|
|
2013-01-28 15:17:20 +08:00
|
|
|
for( int i=1; i<3; i++) {
|
2015-07-15 12:04:48 +08:00
|
|
|
auto filename = StringUtils::format("file%d.txt", i);
|
|
|
|
ret = sharedFileUtils->fullPathForFilename(filename);
|
|
|
|
log("%s -> %s", filename.c_str(), ret.c_str());
|
2013-01-28 15:17:20 +08:00
|
|
|
}
|
2015-07-07 14:06:59 +08:00
|
|
|
|
2013-01-28 17:43:53 +08:00
|
|
|
// Gets external.txt from writable path
|
2013-12-19 03:45:30 +08:00
|
|
|
std::string fullPath = sharedFileUtils->fullPathForFilename("external.txt");
|
2013-07-24 06:20:22 +08:00
|
|
|
log("external file path = %s", fullPath.c_str());
|
2013-03-03 10:32:09 +08:00
|
|
|
if (fullPath.length() > 0)
|
|
|
|
{
|
2013-01-28 17:43:53 +08:00
|
|
|
fp = fopen(fullPath.c_str(), "rb");
|
|
|
|
if (fp)
|
|
|
|
{
|
|
|
|
char szReadBuf[100] = {0};
|
2015-07-13 22:44:40 +08:00
|
|
|
size_t read = fread(szReadBuf, 1, strlen(szReadBuf), fp);
|
2013-03-03 10:32:09 +08:00
|
|
|
if (read > 0)
|
2013-07-24 06:20:22 +08:00
|
|
|
log("The content of file from writable path: %s", szReadBuf);
|
2013-01-28 17:43:53 +08:00
|
|
|
fclose(fp);
|
|
|
|
}
|
|
|
|
}
|
2017-03-06 16:59:43 +08:00
|
|
|
|
2017-04-05 17:40:47 +08:00
|
|
|
// FIXME: should fix the issue on Android
|
|
|
|
#if (CC_TARGET_PLATFORM != CC_PLATFORM_ANDROID)
|
|
|
|
|
2017-03-06 16:59:43 +08:00
|
|
|
// Save old resource root path
|
|
|
|
std::string oldDefaultRootPath = sharedFileUtils->getDefaultResourceRootPath();
|
2017-03-22 11:17:52 +08:00
|
|
|
sharedFileUtils->setDefaultResourceRootPath(oldDefaultRootPath + "extensions");
|
2017-03-06 16:59:43 +08:00
|
|
|
auto sp1 = Sprite::create("orange_edit.png");
|
|
|
|
sp1->setPosition(VisibleRect::center());
|
|
|
|
addChild(sp1);
|
|
|
|
|
|
|
|
// Recover resource root path
|
|
|
|
sharedFileUtils->setDefaultResourceRootPath(oldDefaultRootPath);
|
|
|
|
|
2017-03-22 11:17:52 +08:00
|
|
|
auto oldSearchPaths = sharedFileUtils->getOriginalSearchPaths();
|
2017-03-06 16:59:43 +08:00
|
|
|
sharedFileUtils->addSearchPath("Images");
|
|
|
|
auto sp2 = Sprite::create("btn-about-normal.png");
|
|
|
|
sp2->setPosition(VisibleRect::center() + Vec2(0, -50));
|
|
|
|
addChild(sp2);
|
|
|
|
|
|
|
|
// Recover old search paths
|
|
|
|
sharedFileUtils->setSearchPaths(oldSearchPaths);
|
2017-04-05 17:40:47 +08:00
|
|
|
#endif
|
2013-01-28 15:17:20 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
void TestSearchPath::onExit()
|
|
|
|
{
|
2015-07-07 14:06:59 +08:00
|
|
|
FileUtils *sharedFileUtils = FileUtils::getInstance();
|
2013-01-28 15:17:20 +08:00
|
|
|
|
2015-07-07 14:06:59 +08:00
|
|
|
// reset search path
|
|
|
|
sharedFileUtils->setSearchPaths(_defaultSearchPathArray);
|
2013-06-15 14:03:30 +08:00
|
|
|
sharedFileUtils->setSearchResolutionsOrder(_defaultResolutionsOrderArray);
|
2013-01-28 15:17:20 +08:00
|
|
|
FileUtilsDemo::onExit();
|
|
|
|
}
|
|
|
|
|
2013-12-19 05:52:10 +08:00
|
|
|
std::string TestSearchPath::title() const
|
2013-01-28 15:17:20 +08:00
|
|
|
{
|
|
|
|
return "FileUtils: search path";
|
|
|
|
}
|
|
|
|
|
2013-12-19 05:52:10 +08:00
|
|
|
std::string TestSearchPath::subtitle() const
|
2013-01-28 15:17:20 +08:00
|
|
|
{
|
metal support for cocos2d-x (#19305)
* remove deprecated files
* remove some deprecated codes
* remove more deprecated codes
* remove ui deprecated codes
* remove more deprecated codes
* remove deprecated codes in ccmenuitem
* remove more deprecated codes in ui
* remove more deprecated codes in ui
* remove more deprecated codes in ui
* remove more deprecated codes
* remove more deprecated codes
* remove more deprecated codes
* remove vr related codes and ignore some modules
* remove allocator
* remove some config
* 【Feature】add back-end project file
* [Feature] add back-end file
* add pipeline descriptor and shader cache
* [Feature] support sprite for backend
* [Feature] remove unneeded code
* [Feature] according to es2.0 spec, you must use clamp-to-edge as texture wrap mode, and no mipmapping for non-power-of-two texture
* [Feature] set texture wrap mode to clamp-to-edge, and no mipmapping for non-power-of-two texture
* [Feature] remove macro define to .cpp file
* [Feature] add log info
* [Feature] add PipelineDescriptor for TriangleCommand
* [Feature] add PipelineDescriptor object as member of TriangleCommand
* [Feature] add getPipelineDescriptor method
* add renderbackend
* complete pipeline descriptor
* [Feature] add viewport in RenderCommand
* set viewport when rendrering
* [Feature] occur error when using RendererBackend, to be fixed.
* a workaround to fix black screen on macOS 10.14 (#19090)
* add rendererbackend init function
* fix typo
* [Feature] modify testFile
* [BugFix] modify shader path
* [Feature] set default viewport
* fix projection
* [Feature] modify log info
* [BugFix] change viewport data type to int
* [BugFix] add BindGroup to PipelienDescriptor
* [BugFix] change a_position to vec3 in sprite.vert
* [BugFix] set vertexLayout according to V3F_C4B_T2F structure
* [Feature] revert a_position to vec4
* [Feature] renderer should not use gl codes directly
* [Feature] it's better not use default value parameter
* fix depth test setting
* rendererbackend -> renderer
* clear color and depth at begin
* add metal backend
* metal support normalized attribute
* simplify codes
* update external
* add render pass desctriptor in pipeline descriptor
* fix warnings
* fix crash and memeory leak
* refactor Texture2D
* put pipeline descriptor into render command
* simplify codes
* [Feature] update Sprite
* fix crash when closing app
* [Feature] update SpriteBatchNode and TextureAtlas
* support render texture(not finish)
* [Feature] remove unused code
* make tests work on mac
* fix download-deps path error
* make tests work on iOS
* [Feature] support ttf under normal label effect
* refactor triangle command processing
* let renderer handle more common commands
* refactor backend
* make render texture work
* [Feature] refactor backend for GL
* [Feature]Renaming to make it easy to understand
* [Feature] change warp mode to CLAMP_TO_EDGE
* fix ghost
* simplify visit render queue logic
* support progress timer without rial mode
* support partcile system
* Feature/update label (#149)
* [BugFix] fix compile error
* [Feature] support outline effect in ios
* [Feature] add shader file
* [BugFix] fix begin and end RenderPass
* [Feature] update CustomCommand
* [Feature] revert project.pbxproj
* [Feature] simplify codes
* [BugFix] pack AI88 to RGBA8888 only when outline enable
* [Feature] support shadow effect in Label
* [Feature] support BMFont
* [Feature] support glow effect
* [Feature] simplify shader files
* LabelAtlas work
* handle blend function correctly
* support tile map
* don't share buffer in metal
* alloc buffer size as needed
* support more tilemap
* Merge branch 'minggo/metal-support' into feature/updateLabel
* minggo/metal-support:
support tile map
handle blend function correctly
LabelAtlas work
Feature/update label (#149)
support partcile system
# Conflicts:
# cocos/2d/CCLabel.cpp
# cocos/2d/CCSprite.cpp
# cocos/2d/CCSpriteBatchNode.cpp
# cocos/renderer/CCQuadCommand.cpp
# cocos/renderer/CCQuadCommand.h
* render texture work without saving file
* use global viewport
* grid3d works
* remove grabber
* tiled3d works
* [BugFix] fix label bug
* [Feature] add updateSubData for buffer
* [Feature] remove setVertexCount
* support depth test
* add callback command
* [Feature] add UITest
* [Feature] update UITest
* [Feature] remove unneeded codes
* fix custom command issue
* fix layer color blend issue
* [BugFix] fix iOS compile error
* [Feature] remove unneeded codes
* [Feature] fix updateVertexBuffer
* layerradial works
* add draw test back
* fix batch issue
* fix compiling error
* [BugFix] support ETC1
* [BugFix] get the correct pipelineDescriptor
* [BugFix] skip draw when backendTexture nullptr
* clipping node support
* [Feature] add shader files
* fix stencil issue in metal
* [Feature] update UILayoutTest
* [BugFix] skip drawing when vertexCount is zero
* refactor renderer
* add set global z order for stencil manager commands
* fix warnings caused by type
* remove viewport in render command
* [Feature] fix warnings caused by type
* [BugFix] clear vertexCount and indexCount for CustomComand when needed
* [Feature] update clear for CustomCommand
* ios use metal
* fix viewport issue
* fix LayerColorGradient crash
* [cmake] transport to android and windows (#160)
* save point 1
* compile on windows
* run on android
* revert useless change
* android set CC_ENABLE_CACHE_TEXTURE_DATA to 1
* add initGlew
* fix android crash
* add TODO new-renderer
* review update
* revert onGLFWWindowPosCallback
* fix android compiling error
* Impl progress radial (#162)
* progresstimer add radial impl
* default drawType to element
* dec invoke times of createVertexBuffer (#163)
* support depth/stencil format for gl backend
* simplify progress timer codes
* support motionstreak, effect is wrong
* fix motionstreak issue
* [Feature] update Scissor Test (#161)
* [Feature] update Scissor Test
* [Feature] update ScissorTest
* [Feature] rename function
* [Feature] get constant reference if needed
* [Feature] show render status (#164)
* improve performance
* fix depth state
* fill error that triangle vertex/index number bigger than buffer
* fix compiline error in release mode
* fix buffer conflict between CPU and GPU on iOS/macOS
* Renderer refactor (#165)
* use one vertes/index buffer with opengl
* fix error on windows
* custom command support index format config
* CCLayer: compact vertex data structure
* update comment
* fix doc
* support fast tilemap
* pass index format instead
* fix some wrong effect
* fix render texture error
* fix texture per-element size
* fix texture format error
* BlendFunc type refactor, GLenum -> backend::BlendFactor (#167)
* BlendFunc use backend::BlendFactor as inner field
* update comments
* use int to replace GLenum
* update xcode project fiel
* rename to GLBlendConst
* add ccConstants.h
* update xcode project file
* update copyright
* remove primitive command
* remove CCPrimitive.cpp/.h
* remove deprecated files
* remove unneeded files
* remove multiple view support
* remove multiple view support
* remove the usage of frame buffer in camera
* director don't use frame buffer
* remove FrameBuffer
* remove BatchCommand
* add some api reference
* add physics2d back
* fix crash when close app on mac
* improve render texture
* fix rendertexture issue
* fix rendertexture issue
* simplify codes
* CMake support for mac & ios (#169)
* update cmake
* fix compile error
* update 3rd libs version
* remove CCThread.h/.cpp
* remove ccthread
* use audio engine to implement simple audio engine
* remove unneeded codes
* remove deprecated codes
* remove winrt macro
* remove CC_USE_WIC
* set partcile blend function in more elegant way
* remove unneeded codes
* remove unneeded codes
* cmake works on windows
* update project setting
* improve performance
* GLFloat -> float
* sync v3 cmake improvements into metal-support (#172)
* pick: modern cmake, compile definitions improvement (#19139)
* modern cmake, use target_compile_definitions partly
* simplify macro define, remove USE_*
* modern cmake, macro define
* add physics 2d macro define into ccConfig.h
* remove USE_CHIPMUNK macro in build.gradle
* remove CocosSelectModule.cmake
* shrink useless define
* simplify compile options config, re-add if necessary
* update external for tmp CI test
* un-quote target_compile_options value
* add "-g" parameter only when debug mode
* keep single build type when generator Xcode & VS projecy
* update external for tmp CI tes
* add static_cast<char>(-1), fix -Wc++11-narrowing
* simplify win32 compile define
* not modify code, only improve compile options
# Conflicts:
# .gitignore
# cmake/Modules/CocosConfigDepend.cmake
# cocos/CMakeLists.txt
# external/config.json
# tests/cpp-tests/CMakeLists.txt
* modern cmake, improve cmake_compiler_flags (#19145)
* cmake_compiler_flags
* Fix typo
* Fix typo2
* Remove chanages from Android.mk
* correct lua template cmake build (#19149)
* don't add -Wno-deprecated into jsb target
* correct lua template cmake build
* fix win32 lua template compile error
* prevent cmake in-source-build friendly (#19151)
* pick: Copy resources to "Resources/" on win32 like in linux configuration
* add "/Z7" for cpp-tests on windows
* [cmake] fix iOS xcode property setting failed (#19208)
* fix iOS xcode property setting failed
* use search_depend_libs_recursive at dlls collect
* fix typo
* [cmake] add find_host_library into iOS toolchain file (#19230)
* pick: [lua android] use luajit & template cmake update (#19239)
* increase cmake stability , remove tests/CMakeLists.txt (#19261)
* cmake win32 Precompiled header (#19273)
* Precompiled header
* Fix
* Precompiled header for cocos
* Precompiled header jscocos2d
* Fix for COCOS2D_DEBUG is always 1 on Android (#19291)
Related #19289
* little build fix, tests cpp-tests works on mac
* sync v3 build related codes into metal-support (#173)
* strict initialization for std::array
* remove proj.win32 project configs
* modern cmake, cmake_cleanup_remove_unused_variables (#19146)
* Switch travis CI to xenial (#19207)
* Switch travis CI to xenial
* Remove language: android
* Set language: cpp
* Fix java problem
* Update sdkmanager
* Fix sdkmanger
* next sdkmanager fix
* Remove xenial from android
* revert to sdk-tools-{system}-3859397
* Remove linux cmake install
* Update before-install.sh
* Update .travis.yml
* Simplify install-deps-linux.sh, tested on Ubuntu 16.04 (#19212)
* Simplify install-deps-linux.sh
* Cleanup
* pick: install ninja
* update cocos2d-console submodule
* for metal-support alpha release, we only test cpp
* add HelloCpp into project(Cocos2d-x) for tmp test
* update extenal metal-support-4
* update uniform setting
* [Feature] update BindGroup
* [Feature] empty-test
* [Feature] cpp-test
* [Feature] fix GL compiler error
* [Feature] fix GL crash
* [Feature] empty-test
* [Feature] cpp-tests
* [feature] improve frameRate
* [feature] fix opengl compile error
* [feature] fix opengl compile error
* [BugFix] fix compute maxLocation error
* [Feature] update setting unifrom
* [Feature] fix namespace
* [Feature] remove unneeded code
* [Bugfix] fix project file
* [Feature] update review
* [texture2d] impl texture format support (#175)
* texture update
* update
* update texture
* commit
* compile on windows
* ddd
* rename
* rename methods
* no crash
* save gl
* save
* save
* rename
* move out pixel format convert functions
* metal crash
* update
* update android
* support gles compressed texture format
* support more compress format
* add more conversion methods
* ss
* save
* update conversion methods
* add PVRTC format support
* reformat
* add marco linux
* fix GL marcro
* pvrtc supported only by ios 8.0+
* remove unused cmake
* revert change
* refactor Texture2D::initWithData
* fix conversion log
* refactor Texture2D::initWithData
* remove some OpenGL constants for PVRTC
* add todo
* fix typo
* AutoTest works on mac/iOS by disable part cases, sync v3 bug fix (#174)
* review cpp-tests, and fix part issues on start auto test
* sync png format fix: Node:Particle3D abnormal texture effects #19204
* fix cpp-tests SpritePolygon crash, wrong png format (#19170)
* fix wrong png convert format from sRGB to Gray
* erase plist index if all frames was erased
* test_A8.png have I8 format, fix it
* [CCSpriteCache] allow re-add plist & add testcase (#19175)
* allow re-add plist & add testcase
* remove comments/rename method/update testcase
* fix isSpriteFramesWithFileLoaded & add testcase
* remove used variable
* remove unused variable
* fix double free issues when js/lua-tests exit on iOS (#19236)
* disable part cases, AutoTest works without crash on mac
* update cocos2dx files json, to test cocos new next
* fix spritecache plist parsing issue (#19269)
* [linux] Fix FileUtils::getContents with folder (#19157)
* fix FileUtils::getContents on linux/mac
* use stat.st_mode
* simplify
* [CCFileUtils] win32 getFileSize (#19176)
* win32 getFileSize
* fix stat
* [cpp test-Android]20:FileUtils/2 change title (#19197)
* sync #19200
* sync #19231
* [android lua] improve performance of lua loader (#19234)
* [lua] improve performance of lua loader
* remove cache fix
* Revert "fix spritecache plist parsing issue (#19269)"
This reverts commit f3a85ece4307a7b90816c34489d1ed2c8fd11baf.
* remove win32 project files ref in template.json
* add metal framework lnk ref into cpp template
* test on iOS, and disable part cases
* alBufferData instead of alBufferDataStatic for small audio file on Apple (#19227)
* changes AudioCache to use alBufferData instead of alBufferDataStatic
(also makes test 19 faster to trigger openal bugs faster)
The original problem: CrashIfClientProvidedBogusAudioBufferList
https://github.com/cocos2d/cocos2d-x/issues/18948
is not happening anymore, but there's still a not very frequent issue
that makes OpenAL crash with a call stack like this.
AudioCache::readDataTask > alBufferData > CleanUpDeadBufferList
It happes more frequently when the device is "cold", which means after
half an hour of not using the device (locked).
I could not find the actual source code for iOS OpenAL, so I used the
macOS versions:
https://opensource.apple.com/source/OpenAL/OpenAL-48.7/Source/OpenAL/oalImp.cpp.auto.html
They seem to use CAGuard.h to make sure the dead buffer list
has no threading issues. I'm worried because the CAGuard code I found
has macos and win32 define but no iOS, so I'm not sure. I guess the
iOS version is different and has the guard.
I could not find a place in the code that's unprotected by the locks
except the InitializeBufferMap() which should not be called more than
once from cocos, and there's a workaround in AudioEngine-impl for it.
I reduced the occurence of the CleanUpDeadBufferList crash by moving
the guard in ~AudioCache to cover the alDeleteBuffers call.
* remove hack method "setTimeout" on audio
* AutoTest works on iOS
* support set ios deployment target for root project
* enable all texture2d cases, since Jiang have fixed
* add CCTextureUtils to xcode project file (#176)
* add leak cases for SpriteFrameCache (#177)
* re-add SpriteFrameCache cases
* update template file json
* Update SpriteFrameCacheTest.cpp
* fix compiling error
2019-01-18 15:08:25 +08:00
|
|
|
return "See the console, can see a orange box and a 'about' picture, except Android";
|
2013-01-28 15:17:20 +08:00
|
|
|
}
|
|
|
|
|
2014-03-26 14:54:50 +08:00
|
|
|
// TestFilenameLookup
|
2013-01-28 15:17:20 +08:00
|
|
|
|
|
|
|
void TestFilenameLookup::onEnter()
|
|
|
|
{
|
|
|
|
FileUtilsDemo::onEnter();
|
2015-07-07 14:06:59 +08:00
|
|
|
|
2013-08-16 16:05:27 +08:00
|
|
|
auto sharedFileUtils = FileUtils::getInstance();
|
2013-01-28 15:17:20 +08:00
|
|
|
|
2013-12-04 17:46:57 +08:00
|
|
|
ValueMap dict;
|
2013-12-03 14:47:35 +08:00
|
|
|
dict["grossini.bmp"] = Value("Images/grossini.png");
|
|
|
|
dict["grossini.xcf"] = Value("Images/grossini.png");
|
2015-07-07 14:06:59 +08:00
|
|
|
|
2013-01-28 15:17:20 +08:00
|
|
|
sharedFileUtils->setFilenameLookupDictionary(dict);
|
2015-07-07 14:06:59 +08:00
|
|
|
|
2013-01-28 15:17:20 +08:00
|
|
|
// Instead of loading carlitos.xcf, it will load grossini.png
|
2013-08-16 16:05:27 +08:00
|
|
|
auto sprite = Sprite::create("grossini.xcf");
|
2013-01-28 15:17:20 +08:00
|
|
|
this->addChild(sprite);
|
2015-07-07 14:06:59 +08:00
|
|
|
|
2013-08-16 16:05:27 +08:00
|
|
|
auto s = Director::getInstance()->getWinSize();
|
2014-08-28 11:41:18 +08:00
|
|
|
sprite->setPosition(s.width/2, s.height/2);
|
2013-01-28 15:17:20 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
void TestFilenameLookup::onExit()
|
|
|
|
{
|
2015-07-07 14:06:59 +08:00
|
|
|
|
|
|
|
FileUtils *sharedFileUtils = FileUtils::getInstance();
|
|
|
|
|
|
|
|
// reset filename lookup
|
2013-12-04 17:46:57 +08:00
|
|
|
sharedFileUtils->setFilenameLookupDictionary(ValueMap());
|
2015-07-07 14:06:59 +08:00
|
|
|
|
2013-01-28 15:17:20 +08:00
|
|
|
FileUtilsDemo::onExit();
|
|
|
|
}
|
|
|
|
|
2013-12-19 05:52:10 +08:00
|
|
|
std::string TestFilenameLookup::title() const
|
2013-01-28 15:17:20 +08:00
|
|
|
{
|
|
|
|
return "FileUtils: filename lookup";
|
|
|
|
}
|
|
|
|
|
2014-03-26 14:54:50 +08:00
|
|
|
// TestIsFileExist
|
2013-02-01 22:18:43 +08:00
|
|
|
|
|
|
|
void TestIsFileExist::onEnter()
|
|
|
|
{
|
|
|
|
FileUtilsDemo::onEnter();
|
2013-08-16 16:05:27 +08:00
|
|
|
auto s = Director::getInstance()->getWinSize();
|
|
|
|
auto sharedFileUtils = FileUtils::getInstance();
|
2015-07-07 14:06:59 +08:00
|
|
|
|
2014-07-09 09:52:21 +08:00
|
|
|
Label* label = nullptr;
|
2013-02-01 22:18:43 +08:00
|
|
|
bool isExist = false;
|
2015-07-07 14:06:59 +08:00
|
|
|
|
2013-02-01 22:18:43 +08:00
|
|
|
isExist = sharedFileUtils->isFileExist("Images/grossini.png");
|
2015-07-07 14:06:59 +08:00
|
|
|
|
2014-07-09 09:52:21 +08:00
|
|
|
label = Label::createWithSystemFont(isExist ? "Images/grossini.png exists" : "Images/grossini.png doesn't exist", "", 20);
|
2014-08-28 11:41:18 +08:00
|
|
|
label->setPosition(s.width/2, s.height/3);
|
2014-07-09 09:52:21 +08:00
|
|
|
this->addChild(label);
|
2015-07-07 14:06:59 +08:00
|
|
|
|
2013-02-01 22:18:43 +08:00
|
|
|
isExist = sharedFileUtils->isFileExist("Images/grossini.xcf");
|
2014-07-09 09:52:21 +08:00
|
|
|
label = Label::createWithSystemFont(isExist ? "Images/grossini.xcf exists" : "Images/grossini.xcf doesn't exist", "", 20);
|
2014-08-28 11:41:18 +08:00
|
|
|
label->setPosition(s.width/2, s.height/3*2);
|
2014-07-09 09:52:21 +08:00
|
|
|
this->addChild(label);
|
2013-02-01 22:18:43 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
void TestIsFileExist::onExit()
|
|
|
|
{
|
2015-07-07 14:06:59 +08:00
|
|
|
|
|
|
|
FileUtils *sharedFileUtils = FileUtils::getInstance();
|
|
|
|
|
|
|
|
// reset filename lookup
|
2013-12-04 17:46:57 +08:00
|
|
|
sharedFileUtils->setFilenameLookupDictionary(ValueMap());
|
2015-07-07 14:06:59 +08:00
|
|
|
|
2013-02-01 22:18:43 +08:00
|
|
|
FileUtilsDemo::onExit();
|
|
|
|
}
|
|
|
|
|
2013-12-19 05:52:10 +08:00
|
|
|
std::string TestIsFileExist::title() const
|
2013-02-01 22:18:43 +08:00
|
|
|
{
|
|
|
|
return "FileUtils: check whether the file exists";
|
|
|
|
}
|
|
|
|
|
2013-12-19 05:52:10 +08:00
|
|
|
std::string TestIsFileExist::subtitle() const
|
2013-02-01 22:18:43 +08:00
|
|
|
{
|
|
|
|
return "";
|
2013-03-03 10:32:09 +08:00
|
|
|
}
|
2013-04-28 00:36:37 +08:00
|
|
|
|
2015-07-13 22:44:40 +08:00
|
|
|
// TestIsDirectoryExist
|
|
|
|
|
|
|
|
void TestIsDirectoryExist::onEnter()
|
|
|
|
{
|
|
|
|
FileUtilsDemo::onEnter();
|
|
|
|
auto s = Director::getInstance()->getWinSize();
|
|
|
|
auto util = FileUtils::getInstance();
|
|
|
|
int x = s.width/2, y = s.height/3;
|
2016-04-26 13:37:22 +08:00
|
|
|
|
2015-07-13 22:44:40 +08:00
|
|
|
Label* label = nullptr;
|
|
|
|
std::string dir;
|
2015-07-17 15:20:49 +08:00
|
|
|
auto getMsg = [&dir](bool b)-> std::string
|
2015-07-13 22:44:40 +08:00
|
|
|
{
|
2015-07-17 15:20:49 +08:00
|
|
|
char msg[512];
|
2015-07-13 22:44:40 +08:00
|
|
|
snprintf((char *)msg, 512, "%s for dir: \"%s\"", b ? "success" : "failed", dir.c_str());
|
2015-07-17 15:20:49 +08:00
|
|
|
return std::string(msg);
|
2015-07-13 22:44:40 +08:00
|
|
|
};
|
2016-04-26 13:37:22 +08:00
|
|
|
|
2015-07-13 22:44:40 +08:00
|
|
|
dir = "Images";
|
|
|
|
label = Label::createWithSystemFont(getMsg(util->isDirectoryExist(dir)), "", 20);
|
|
|
|
label->setPosition(x, y * 2);
|
|
|
|
this->addChild(label);
|
2016-04-26 13:37:22 +08:00
|
|
|
|
2015-07-13 22:44:40 +08:00
|
|
|
dir = util->getWritablePath();
|
|
|
|
label = Label::createWithSystemFont(getMsg(util->isDirectoryExist(dir)), "", 20);
|
|
|
|
label->setPosition(x, y * 1);
|
|
|
|
this->addChild(label);
|
|
|
|
|
|
|
|
dir = util->getWritablePath();
|
|
|
|
label = Label::createWithSystemFont(getMsg(util->isDirectoryExist(dir)), "", 20);
|
|
|
|
label->setPosition(x, y * 1);
|
|
|
|
this->addChild(label);
|
|
|
|
}
|
|
|
|
|
|
|
|
void TestIsDirectoryExist::onExit()
|
|
|
|
{
|
2016-04-26 13:37:22 +08:00
|
|
|
|
2015-07-13 22:44:40 +08:00
|
|
|
FileUtils *sharedFileUtils = FileUtils::getInstance();
|
2016-04-26 13:37:22 +08:00
|
|
|
|
2015-07-13 22:44:40 +08:00
|
|
|
// reset filename lookup
|
|
|
|
sharedFileUtils->purgeCachedEntries();
|
2016-04-26 13:37:22 +08:00
|
|
|
|
2015-07-13 22:44:40 +08:00
|
|
|
FileUtilsDemo::onExit();
|
|
|
|
}
|
|
|
|
|
|
|
|
std::string TestIsDirectoryExist::title() const
|
|
|
|
{
|
|
|
|
return "FileUtils: check whether the directory exists";
|
|
|
|
}
|
|
|
|
|
|
|
|
std::string TestIsDirectoryExist::subtitle() const
|
|
|
|
{
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
|
2014-06-24 14:51:35 +08:00
|
|
|
// TestFileFuncs
|
|
|
|
|
|
|
|
void TestFileFuncs::onEnter()
|
|
|
|
{
|
|
|
|
FileUtilsDemo::onEnter();
|
|
|
|
auto s = Director::getInstance()->getWinSize();
|
|
|
|
auto sharedFileUtils = FileUtils::getInstance();
|
2015-07-07 14:06:59 +08:00
|
|
|
|
2014-06-24 14:51:35 +08:00
|
|
|
int x = s.width/2,
|
|
|
|
y = s.height/5;
|
2014-07-09 09:52:21 +08:00
|
|
|
Label* label = nullptr;
|
2015-07-07 14:06:59 +08:00
|
|
|
|
2014-06-24 14:51:35 +08:00
|
|
|
std::string filename = "__test.test";
|
|
|
|
std::string filename2 = "__newtest.test";
|
|
|
|
std::string filepath = sharedFileUtils->getWritablePath() + filename;
|
|
|
|
std::string content = "Test string content to put into created file";
|
|
|
|
std::string msg;
|
2015-07-07 14:06:59 +08:00
|
|
|
|
2014-06-24 14:51:35 +08:00
|
|
|
FILE *out = fopen(filepath.c_str(), "w");
|
|
|
|
fputs(content.c_str(), out);
|
|
|
|
fclose(out);
|
2015-07-07 14:06:59 +08:00
|
|
|
|
2014-06-24 14:51:35 +08:00
|
|
|
// Check whether file can be created
|
|
|
|
if (sharedFileUtils->isFileExist(filepath))
|
|
|
|
{
|
2014-07-09 09:52:21 +08:00
|
|
|
label = Label::createWithSystemFont("Test file '__test.test' created", "", 20);
|
2014-08-28 11:41:18 +08:00
|
|
|
label->setPosition(x, y * 4);
|
2014-07-09 09:52:21 +08:00
|
|
|
this->addChild(label);
|
2015-07-07 14:06:59 +08:00
|
|
|
|
2014-06-24 14:51:35 +08:00
|
|
|
// getFileSize Test
|
|
|
|
long size = sharedFileUtils->getFileSize(filepath);
|
|
|
|
msg = StringUtils::format("getFileSize: Test file size equals %ld", size);
|
2014-07-09 09:52:21 +08:00
|
|
|
label = Label::createWithSystemFont(msg, "", 20);
|
2014-08-28 11:41:18 +08:00
|
|
|
label->setPosition(x, y * 3);
|
2014-07-09 09:52:21 +08:00
|
|
|
this->addChild(label);
|
2015-07-07 14:06:59 +08:00
|
|
|
|
2014-06-24 14:51:35 +08:00
|
|
|
// renameFile Test
|
|
|
|
if (sharedFileUtils->renameFile(sharedFileUtils->getWritablePath(), filename, filename2))
|
|
|
|
{
|
2014-07-09 09:52:21 +08:00
|
|
|
label = Label::createWithSystemFont("renameFile: Test file renamed to '__newtest.test'", "", 20);
|
2014-08-28 11:41:18 +08:00
|
|
|
label->setPosition(x, y * 2);
|
2014-07-09 09:52:21 +08:00
|
|
|
this->addChild(label);
|
2015-07-07 14:06:59 +08:00
|
|
|
|
2014-06-24 14:51:35 +08:00
|
|
|
// removeFile Test
|
|
|
|
filepath = sharedFileUtils->getWritablePath() + filename2;
|
|
|
|
if (sharedFileUtils->removeFile(filepath))
|
|
|
|
{
|
2014-07-09 09:52:21 +08:00
|
|
|
label = Label::createWithSystemFont("removeFile: Test file removed", "", 20);
|
2014-08-28 11:41:18 +08:00
|
|
|
label->setPosition(x, y * 1);
|
2014-07-09 09:52:21 +08:00
|
|
|
this->addChild(label);
|
2014-06-24 14:51:35 +08:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2014-07-09 09:52:21 +08:00
|
|
|
label = Label::createWithSystemFont("removeFile: Failed to remove test file", "", 20);
|
2014-08-28 11:41:18 +08:00
|
|
|
label->setPosition(x, y * 1);
|
2014-07-09 09:52:21 +08:00
|
|
|
this->addChild(label);
|
2014-06-24 14:51:35 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2014-07-09 09:52:21 +08:00
|
|
|
label = Label::createWithSystemFont("renameFile: Failed to rename test file to '__newtest.test', further test skipped", "", 20);
|
2014-08-28 11:41:18 +08:00
|
|
|
label->setPosition(x, y * 2);
|
2014-07-09 09:52:21 +08:00
|
|
|
this->addChild(label);
|
2014-06-24 14:51:35 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2014-07-09 09:52:21 +08:00
|
|
|
label = Label::createWithSystemFont("Test file can not be created, test skipped", "", 20);
|
2014-08-28 11:41:18 +08:00
|
|
|
label->setPosition(x, y * 4);
|
2014-07-09 09:52:21 +08:00
|
|
|
this->addChild(label);
|
2014-06-24 14:51:35 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
std::string TestFileFuncs::title() const
|
|
|
|
{
|
|
|
|
return "FileUtils: file control functions";
|
|
|
|
}
|
|
|
|
|
|
|
|
std::string TestFileFuncs::subtitle() const
|
|
|
|
{
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
|
|
|
|
// TestDirectoryFuncs
|
|
|
|
|
|
|
|
void TestDirectoryFuncs::onEnter()
|
|
|
|
{
|
|
|
|
FileUtilsDemo::onEnter();
|
|
|
|
auto s = Director::getInstance()->getWinSize();
|
|
|
|
auto sharedFileUtils = FileUtils::getInstance();
|
2015-07-07 14:06:59 +08:00
|
|
|
|
2014-06-24 14:51:35 +08:00
|
|
|
int x = s.width/2,
|
|
|
|
y = s.height/4;
|
2014-07-09 09:52:21 +08:00
|
|
|
Label* label = nullptr;
|
2015-07-07 14:06:59 +08:00
|
|
|
|
2016-07-07 17:41:36 +08:00
|
|
|
std::string dir = sharedFileUtils->getWritablePath() + "__test";
|
2014-06-24 14:51:35 +08:00
|
|
|
std::string subDir = "dir1/dir2";
|
2016-07-07 17:41:36 +08:00
|
|
|
std::string fullSubDir = dir + "/" + subDir;
|
2014-06-24 14:51:35 +08:00
|
|
|
std::string msg;
|
|
|
|
bool ok;
|
2015-07-07 14:06:59 +08:00
|
|
|
|
2014-06-24 14:51:35 +08:00
|
|
|
// Check whether dir can be created
|
|
|
|
ok = sharedFileUtils->createDirectory(dir);
|
|
|
|
if (ok && sharedFileUtils->isDirectoryExist(dir))
|
|
|
|
{
|
|
|
|
msg = StringUtils::format("createDirectory: Directory '__test' created");
|
2014-07-09 09:52:21 +08:00
|
|
|
label = Label::createWithSystemFont(msg, "", 20);
|
2014-08-28 11:41:18 +08:00
|
|
|
label->setPosition(x, y * 3);
|
2014-07-09 09:52:21 +08:00
|
|
|
this->addChild(label);
|
2015-07-07 14:06:59 +08:00
|
|
|
|
2014-06-24 14:51:35 +08:00
|
|
|
// Create sub directories recursively
|
2016-07-07 17:41:36 +08:00
|
|
|
ok = sharedFileUtils->createDirectory(fullSubDir);
|
|
|
|
if (ok && sharedFileUtils->isDirectoryExist(fullSubDir))
|
2014-06-24 14:51:35 +08:00
|
|
|
{
|
2014-07-21 16:51:48 +08:00
|
|
|
msg = StringUtils::format("createDirectory: Sub directories '%s' created", subDir.c_str());
|
2014-07-09 09:52:21 +08:00
|
|
|
label = Label::createWithSystemFont(msg, "", 20);
|
2014-08-28 11:41:18 +08:00
|
|
|
label->setPosition(x, y * 2);
|
2014-07-09 09:52:21 +08:00
|
|
|
this->addChild(label);
|
2014-06-24 14:51:35 +08:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2014-07-21 16:51:48 +08:00
|
|
|
msg = StringUtils::format("createDirectory: Failed to create sub directories '%s'", subDir.c_str());
|
2014-07-09 09:52:21 +08:00
|
|
|
label = Label::createWithSystemFont(msg, "", 20);
|
2014-08-28 11:41:18 +08:00
|
|
|
label->setPosition(x, y * 2);
|
2014-07-09 09:52:21 +08:00
|
|
|
this->addChild(label);
|
2014-06-24 14:51:35 +08:00
|
|
|
}
|
2015-07-07 14:06:59 +08:00
|
|
|
|
2014-06-24 14:51:35 +08:00
|
|
|
// Remove directory
|
|
|
|
ok = sharedFileUtils->removeDirectory(dir);
|
|
|
|
if (ok && !sharedFileUtils->isDirectoryExist(dir))
|
|
|
|
{
|
|
|
|
msg = StringUtils::format("removeDirectory: Directory '__test' removed");
|
2014-07-09 09:52:21 +08:00
|
|
|
label = Label::createWithSystemFont(msg, "", 20);
|
2014-08-28 11:41:18 +08:00
|
|
|
label->setPosition(x, y);
|
2014-07-09 09:52:21 +08:00
|
|
|
this->addChild(label);
|
2014-06-24 14:51:35 +08:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
msg = StringUtils::format("removeDirectory: Failed to remove directory '__test'");
|
2014-07-09 09:52:21 +08:00
|
|
|
label = Label::createWithSystemFont(msg, "", 20);
|
2014-08-28 11:41:18 +08:00
|
|
|
label->setPosition(x, y);
|
2014-07-09 09:52:21 +08:00
|
|
|
this->addChild(label);
|
2014-06-24 14:51:35 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
msg = StringUtils::format("createDirectory: Directory '__test' can not be created");
|
2014-07-09 09:52:21 +08:00
|
|
|
label = Label::createWithSystemFont(msg, "", 20);
|
2014-08-28 11:41:18 +08:00
|
|
|
label->setPosition(x, y * 2);
|
2014-07-09 09:52:21 +08:00
|
|
|
this->addChild(label);
|
2014-06-24 14:51:35 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
std::string TestDirectoryFuncs::title() const
|
|
|
|
{
|
|
|
|
return "FileUtils: directory control functions";
|
|
|
|
}
|
|
|
|
|
|
|
|
std::string TestDirectoryFuncs::subtitle() const
|
|
|
|
{
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
|
2015-07-07 14:06:59 +08:00
|
|
|
void TestWriteString::onEnter()
|
|
|
|
{
|
|
|
|
FileUtilsDemo::onEnter();
|
|
|
|
|
|
|
|
auto winSize = Director::getInstance()->getWinSize();
|
|
|
|
|
|
|
|
auto writeResult = Label::createWithTTF("show writeResult", "fonts/Thonburi.ttf", 18);
|
|
|
|
this->addChild(writeResult);
|
|
|
|
writeResult->setPosition(winSize.width / 2, winSize.height * 3 / 4);
|
|
|
|
|
|
|
|
auto readResult = Label::createWithTTF("show readResult", "fonts/Thonburi.ttf", 18);
|
|
|
|
this->addChild(readResult);
|
|
|
|
readResult->setPosition(winSize.width / 2, winSize.height / 3);
|
|
|
|
|
|
|
|
std::string writablePath = FileUtils::getInstance()->getWritablePath();
|
|
|
|
std::string fileName = "writeStringTest.txt";
|
|
|
|
|
|
|
|
// writeTest
|
|
|
|
std::string writeDataStr = "the string data will be write into a file";
|
|
|
|
std::string fullPath = writablePath + fileName;
|
|
|
|
if (FileUtils::getInstance()->writeStringToFile(writeDataStr, fullPath.c_str()))
|
|
|
|
{
|
|
|
|
log("see the plist file at %s", fullPath.c_str());
|
|
|
|
writeResult->setString("write success:" + writeDataStr);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
log("write plist file failed");
|
|
|
|
writeResult->setString("write fail");
|
|
|
|
}
|
|
|
|
|
|
|
|
// readTest
|
|
|
|
std::string readDataStr = FileUtils::getInstance()->getStringFromFile(fullPath);
|
|
|
|
readResult->setString("read success:" + readDataStr);
|
|
|
|
}
|
|
|
|
|
|
|
|
void TestWriteString::onExit()
|
|
|
|
{
|
|
|
|
FileUtilsDemo::onExit();
|
|
|
|
}
|
|
|
|
|
|
|
|
std::string TestWriteString::title() const
|
|
|
|
{
|
|
|
|
return "FileUtils: TestWriteString to files";
|
|
|
|
}
|
|
|
|
|
|
|
|
std::string TestWriteString::subtitle() const
|
|
|
|
{
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
|
2016-04-26 13:37:22 +08:00
|
|
|
class CustomBuffer : public ResizableBuffer {};
|
|
|
|
|
|
|
|
struct AlreadyExistsBuffer {};
|
|
|
|
|
|
|
|
NS_CC_BEGIN
|
|
|
|
template<>
|
|
|
|
class ResizableBufferAdapter<AlreadyExistsBuffer> : public ResizableBuffer {
|
|
|
|
public:
|
|
|
|
explicit ResizableBufferAdapter(AlreadyExistsBuffer* buffer) {
|
|
|
|
}
|
|
|
|
virtual void resize(size_t size) override {
|
|
|
|
|
|
|
|
}
|
|
|
|
virtual void* buffer() const override {
|
|
|
|
return nullptr;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
NS_CC_END
|
|
|
|
|
|
|
|
static void saveAsBinaryText(const std::string& filename, const std::vector<char>& binary){
|
|
|
|
auto fs = FileUtils::getInstance();
|
|
|
|
std::string text(binary.begin(), binary.end());
|
|
|
|
fs->writeStringToFile(text, filename);
|
|
|
|
}
|
|
|
|
|
|
|
|
static const std::string FileErrors[] = {
|
|
|
|
"OK",
|
|
|
|
"NotExists",
|
|
|
|
"OpenFailed",
|
2016-06-25 11:58:55 +08:00
|
|
|
"ReadFailed",
|
2016-04-26 13:37:22 +08:00
|
|
|
"NotInitialized",
|
|
|
|
"TooLarge",
|
|
|
|
"ObtainSizeFailed",
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
void TestGetContents::onEnter()
|
|
|
|
{
|
|
|
|
FileUtilsDemo::onEnter();
|
|
|
|
auto fs = FileUtils::getInstance();
|
|
|
|
|
|
|
|
auto testIfCompiles = [fs]() {
|
|
|
|
fs->getContents("", (CustomBuffer*)(nullptr));
|
|
|
|
AlreadyExistsBuffer buf;
|
|
|
|
fs->getContents("", &buf);
|
|
|
|
};
|
|
|
|
|
|
|
|
(void)(testIfCompiles);
|
|
|
|
|
|
|
|
auto winSize = Director::getInstance()->getWinSize();
|
|
|
|
|
|
|
|
auto readResult = Label::createWithTTF("show readResult", "fonts/Thonburi.ttf", 16);
|
|
|
|
this->addChild(readResult);
|
|
|
|
readResult->setPosition(winSize.width / 2, winSize.height / 2);
|
|
|
|
|
|
|
|
std::vector<char> binary = {'\r','\n','\r','\n','\0','\0','\r','\n'};
|
|
|
|
_generatedFile = fs->getWritablePath() + "file-with-zeros-and-crlf";
|
|
|
|
saveAsBinaryText(_generatedFile, binary);
|
|
|
|
|
|
|
|
|
|
|
|
auto runTests = [&]() {
|
|
|
|
// Test read string in binary mode
|
|
|
|
std::string bs;
|
|
|
|
fs->getContents(_generatedFile, &bs);
|
|
|
|
if ( bs.size() != binary.size() || !std::equal( bs.begin(), bs.end(), binary.begin() ) )
|
|
|
|
return std::string("failed: read as binary string");
|
|
|
|
|
|
|
|
// Text read string in text mode
|
|
|
|
std::string ts = fs->getStringFromFile(_generatedFile);
|
2019-09-04 10:03:38 +08:00
|
|
|
if (strcmp(ts.c_str(), "\r\n\r\n")!=0)
|
2016-04-26 13:37:22 +08:00
|
|
|
return std::string("failed: read as zero terminated string");
|
|
|
|
|
|
|
|
|
|
|
|
std::string files[] = {_generatedFile, "background.wav", "fileLookup.plist"};
|
|
|
|
for (auto& file : files) {
|
|
|
|
std::string sbuf;
|
|
|
|
|
|
|
|
auto serr = fs->getContents(file, &sbuf);
|
|
|
|
if (serr != FileUtils::Status::OK)
|
|
|
|
return std::string("failed: error: " + FileErrors[(int)serr]);
|
|
|
|
|
|
|
|
std::vector<int> vbuf;
|
|
|
|
auto verr = fs->getContents(file, &vbuf);
|
|
|
|
if (verr != FileUtils::Status::OK)
|
|
|
|
return std::string("failed: error: " + FileErrors[(int)verr]);
|
|
|
|
|
|
|
|
Data dbuf;
|
|
|
|
auto derr = fs->getContents(file, &dbuf);
|
|
|
|
if (derr != FileUtils::Status::OK)
|
|
|
|
return std::string("failed: error: " + FileErrors[(int)derr]);
|
|
|
|
|
|
|
|
if (memcmp(&sbuf.front(), &vbuf.front(), sbuf.size()) != 0)
|
|
|
|
return std::string("failed: error: sbuf != vbuf");
|
|
|
|
|
|
|
|
if (dbuf.getSize() != sbuf.size())
|
|
|
|
return std::string("failed: error: sbuf.size() != dbuf.getSize()");
|
|
|
|
|
|
|
|
if (memcmp(&sbuf.front(), dbuf.getBytes(), sbuf.size()) != 0)
|
|
|
|
return std::string("failed: error: sbuf != dbuf");
|
|
|
|
}
|
|
|
|
return std::string("read success");
|
|
|
|
};
|
|
|
|
readResult->setString("FileUtils::getContents() " + runTests());
|
|
|
|
}
|
|
|
|
|
|
|
|
void TestGetContents::onExit()
|
|
|
|
{
|
|
|
|
if (!_generatedFile.empty())
|
|
|
|
FileUtils::getInstance()->removeFile(_generatedFile);
|
|
|
|
|
|
|
|
FileUtilsDemo::onExit();
|
|
|
|
}
|
|
|
|
|
|
|
|
std::string TestGetContents::title() const
|
|
|
|
{
|
|
|
|
return "FileUtils: TestGetContents";
|
|
|
|
}
|
|
|
|
|
|
|
|
std::string TestGetContents::subtitle() const
|
|
|
|
{
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
|
2015-07-07 14:06:59 +08:00
|
|
|
void TestWriteData::onEnter()
|
|
|
|
{
|
|
|
|
FileUtilsDemo::onEnter();
|
|
|
|
|
|
|
|
auto winSize = Director::getInstance()->getWinSize();
|
|
|
|
|
|
|
|
auto writeResult = Label::createWithTTF("show writeResult", "fonts/Thonburi.ttf", 18);
|
|
|
|
this->addChild(writeResult);
|
|
|
|
writeResult->setPosition(winSize.width / 2, winSize.height * 3 / 4);
|
|
|
|
|
|
|
|
auto readResult = Label::createWithTTF("show readResult", "fonts/Thonburi.ttf", 18);
|
|
|
|
this->addChild(readResult);
|
|
|
|
readResult->setPosition(winSize.width / 2, winSize.height / 3);
|
|
|
|
|
|
|
|
std::string writablePath = FileUtils::getInstance()->getWritablePath();
|
|
|
|
std::string fileName = "writeDataTest.txt";
|
|
|
|
|
|
|
|
// writeTest
|
|
|
|
std::string writeDataStr = "the binary data will be write into a file";
|
|
|
|
Data writeData;
|
|
|
|
writeData.copy((unsigned char *)writeDataStr.c_str(), writeDataStr.size());
|
|
|
|
std::string fullPath = writablePath + fileName;
|
|
|
|
if (FileUtils::getInstance()->writeDataToFile(writeData, fullPath.c_str()))
|
|
|
|
{
|
|
|
|
log("see the plist file at %s", fullPath.c_str());
|
|
|
|
writeResult->setString("write success:" + writeDataStr);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
log("write plist file failed");
|
|
|
|
writeResult->setString("write fail");
|
|
|
|
}
|
|
|
|
|
|
|
|
// readTest
|
|
|
|
unsigned char* buffer = nullptr;
|
|
|
|
Data readData = FileUtils::getInstance()->getDataFromFile(fullPath);
|
|
|
|
buffer = (unsigned char*)malloc(sizeof(unsigned char) * (readData.getSize() + 1));
|
|
|
|
memcpy(buffer, readData.getBytes(), readData.getSize());
|
|
|
|
buffer[readData.getSize()] = '\0';
|
|
|
|
std::string readDataStr((const char*)buffer);
|
|
|
|
free(buffer);
|
|
|
|
|
|
|
|
readResult->setString("read success:" + readDataStr);
|
|
|
|
}
|
|
|
|
|
|
|
|
void TestWriteData::onExit()
|
|
|
|
{
|
|
|
|
FileUtilsDemo::onExit();
|
|
|
|
}
|
|
|
|
|
|
|
|
std::string TestWriteData::title() const
|
|
|
|
{
|
|
|
|
return "FileUtils: TestWriteData to files";
|
|
|
|
}
|
|
|
|
|
|
|
|
std::string TestWriteData::subtitle() const
|
|
|
|
{
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
|
|
|
|
void TestWriteValueMap::onEnter()
|
|
|
|
{
|
|
|
|
FileUtilsDemo::onEnter();
|
|
|
|
|
|
|
|
auto winSize = Director::getInstance()->getWinSize();
|
|
|
|
|
|
|
|
auto writeResult = Label::createWithTTF("show writeResult", "fonts/Thonburi.ttf", 18);
|
|
|
|
this->addChild(writeResult);
|
|
|
|
writeResult->setPosition(winSize.width / 2, winSize.height * 3 / 4);
|
|
|
|
|
|
|
|
auto readResult = Label::createWithTTF("show readResult", "fonts/Thonburi.ttf", 18);
|
|
|
|
this->addChild(readResult);
|
|
|
|
readResult->setPosition(winSize.width / 2, winSize.height / 3);
|
|
|
|
|
|
|
|
ValueMap valueMap;
|
|
|
|
|
|
|
|
ValueMap mapInValueMap;
|
|
|
|
mapInValueMap["string1"] = "string in dictInMap key 0";
|
|
|
|
mapInValueMap["string2"] = "string in dictInMap key 1";
|
2016-06-10 13:52:35 +08:00
|
|
|
mapInValueMap["none"].getType();
|
|
|
|
|
2015-07-07 14:06:59 +08:00
|
|
|
valueMap["data0"] = Value(mapInValueMap);
|
|
|
|
|
|
|
|
valueMap["data1"] = Value("string in array");
|
|
|
|
|
|
|
|
ValueVector arrayInMap;
|
|
|
|
arrayInMap.push_back(Value("string 0 in arrayInMap"));
|
|
|
|
arrayInMap.push_back(Value("string 1 in arrayInMap"));
|
|
|
|
valueMap["data2"] = arrayInMap;
|
|
|
|
|
|
|
|
//add boolean to the plist
|
|
|
|
auto booleanObject = Value(true);
|
|
|
|
valueMap["data3"] = booleanObject;
|
|
|
|
|
2017-02-10 10:35:52 +08:00
|
|
|
//add integer to the plist
|
2015-07-07 14:06:59 +08:00
|
|
|
auto intObject = Value(1024);
|
|
|
|
valueMap["data4"] = intObject;
|
|
|
|
|
|
|
|
//add float to the plist
|
|
|
|
auto floatObject = Value(1024.1024f);
|
|
|
|
valueMap["data5"] = floatObject;
|
|
|
|
|
|
|
|
//add double to the plist
|
|
|
|
auto doubleObject = Value(1024.123);
|
|
|
|
valueMap["data6"] = doubleObject;
|
|
|
|
|
|
|
|
|
|
|
|
// end with /
|
|
|
|
std::string writablePath = FileUtils::getInstance()->getWritablePath();
|
|
|
|
std::string fullPath = writablePath + "testWriteValueMap.plist";
|
|
|
|
if (FileUtils::getInstance()->writeValueMapToFile(valueMap, fullPath.c_str()))
|
|
|
|
{
|
|
|
|
log("see the plist file at %s", fullPath.c_str());
|
|
|
|
writeResult->setString("write success");
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
log("write plist file failed");
|
|
|
|
writeResult->setString("write failed");
|
|
|
|
}
|
|
|
|
|
|
|
|
ValueMap readValueMap = FileUtils::getInstance()->getValueMapFromFile(fullPath.c_str());
|
|
|
|
std::string readDataStr = "read data:\n";
|
|
|
|
// read value map data
|
|
|
|
ValueMap readMapInMap = readValueMap["data0"].asValueMap();
|
|
|
|
readDataStr += " mapValue:[\"string1\"][" + readMapInMap["string1"].asString() + "]\n";
|
|
|
|
readDataStr += " mapValue:[\"string2\"][" + readMapInMap["string2"].asString() + "]\n";
|
|
|
|
|
|
|
|
// read string data
|
|
|
|
readDataStr += " stringValue:" + readValueMap["data1"].asString() + "\n";
|
|
|
|
|
|
|
|
// read value vector data
|
|
|
|
ValueVector readVectorInMap = readValueMap["data2"].asValueVector();
|
|
|
|
readDataStr += " vectorValue:[1]" + readVectorInMap.at(0).asString() + "\n";
|
|
|
|
readDataStr += " vectorValue:[2]" + readVectorInMap.at(1).asString() + "\n";
|
|
|
|
|
|
|
|
// read bool data
|
2020-08-18 11:33:18 +08:00
|
|
|
readDataStr += " boolValue:" + StringUtils::format("%d", readValueMap["data3"].asBool()) + "\n";
|
2015-07-07 14:06:59 +08:00
|
|
|
|
|
|
|
// read int data
|
2020-08-18 11:33:18 +08:00
|
|
|
readDataStr += " intValue:" + StringUtils::format("%d", readValueMap["data4"].asInt()) + "\n";
|
2015-07-07 14:06:59 +08:00
|
|
|
|
|
|
|
// read float data
|
2020-08-18 11:33:18 +08:00
|
|
|
readDataStr += " floatValue:" + StringUtils::format("%f", readValueMap["data5"].asFloat()) + "\n";
|
2015-07-07 14:06:59 +08:00
|
|
|
|
|
|
|
// read double data
|
2020-08-18 11:33:18 +08:00
|
|
|
readDataStr += " doubleValue:" + StringUtils::format("%f", readValueMap["data6"].asDouble()) + "\n";
|
2015-07-07 14:06:59 +08:00
|
|
|
|
|
|
|
readResult->setString(readDataStr);
|
|
|
|
}
|
|
|
|
void TestWriteValueMap::onExit()
|
|
|
|
{
|
|
|
|
FileUtilsDemo::onExit();
|
|
|
|
}
|
|
|
|
|
|
|
|
std::string TestWriteValueMap::title() const
|
|
|
|
{
|
|
|
|
return "FileUtils: TestWriteValueMap to files";
|
|
|
|
}
|
|
|
|
|
|
|
|
std::string TestWriteValueMap::subtitle() const
|
|
|
|
{
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
|
|
|
|
void TestWriteValueVector::onEnter()
|
|
|
|
{
|
|
|
|
FileUtilsDemo::onEnter();
|
|
|
|
|
|
|
|
auto winSize = Director::getInstance()->getWinSize();
|
|
|
|
|
|
|
|
auto writeResult = Label::createWithTTF("show writeResult", "fonts/Thonburi.ttf", 18);
|
|
|
|
this->addChild(writeResult);
|
|
|
|
writeResult->setPosition(winSize.width / 2, winSize.height * 3 / 4);
|
|
|
|
|
|
|
|
auto readResult = Label::createWithTTF("show readResult", "fonts/Thonburi.ttf", 18);
|
|
|
|
this->addChild(readResult);
|
|
|
|
readResult->setPosition(winSize.width / 2, winSize.height / 3);
|
|
|
|
|
|
|
|
ValueVector array;
|
|
|
|
|
|
|
|
ValueMap mapInArray;
|
|
|
|
mapInArray["string1"] = "string in dictInArray key 0";
|
|
|
|
mapInArray["string2"] = "string in dictInArray key 1";
|
|
|
|
array.push_back(Value(mapInArray));
|
|
|
|
|
|
|
|
array.push_back(Value("string in array"));
|
|
|
|
|
|
|
|
ValueVector arrayInArray;
|
|
|
|
arrayInArray.push_back(Value("string 0 in arrayInArray"));
|
|
|
|
arrayInArray.push_back(Value("string 1 in arrayInArray"));
|
|
|
|
array.push_back(Value(arrayInArray));
|
|
|
|
|
|
|
|
//add boolean to the plist
|
|
|
|
auto booleanObject = Value(true);
|
|
|
|
array.push_back(booleanObject);
|
|
|
|
|
2017-02-10 10:35:52 +08:00
|
|
|
//add integer to the plist
|
2015-07-07 14:06:59 +08:00
|
|
|
auto intObject = Value(1024);
|
|
|
|
array.push_back(intObject);
|
|
|
|
|
|
|
|
//add float to the plist
|
|
|
|
auto floatObject = Value(1024.1024f);
|
|
|
|
array.push_back(floatObject);
|
|
|
|
|
|
|
|
//add double to the plist
|
|
|
|
auto doubleObject = Value(1024.123);
|
|
|
|
array.push_back(doubleObject);
|
|
|
|
|
|
|
|
|
|
|
|
// end with /
|
|
|
|
std::string writablePath = FileUtils::getInstance()->getWritablePath();
|
|
|
|
std::string fullPath = writablePath + "testWriteValueVector.plist";
|
|
|
|
if (FileUtils::getInstance()->writeValueVectorToFile(array, fullPath.c_str()))
|
|
|
|
{
|
|
|
|
log("see the plist file at %s", fullPath.c_str());
|
|
|
|
writeResult->setString("write success");
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
log("write plist file failed");
|
|
|
|
writeResult->setString("write failed");
|
|
|
|
}
|
|
|
|
|
|
|
|
ValueVector readArray = FileUtils::getInstance()->getValueVectorFromFile(fullPath.c_str());
|
|
|
|
std::string readDataStr = "read data:\n";
|
|
|
|
// read value map data
|
|
|
|
ValueMap readMapInArray = readArray.at(0).asValueMap();
|
|
|
|
readDataStr += " mapValue:[\"string1\"][" + readMapInArray["string1"].asString() + "]\n";
|
|
|
|
readDataStr += " mapValue:[\"string2\"][" + readMapInArray["string2"].asString() + "]\n";
|
|
|
|
|
|
|
|
// read string data
|
|
|
|
readDataStr += " stringValue:" + readArray.at(1).asString() + "\n";
|
|
|
|
|
|
|
|
// read value vector data
|
|
|
|
ValueVector readVectorInArray = readArray.at(2).asValueVector();
|
|
|
|
readDataStr += " vectorValue:[1]" + readVectorInArray.at(0).asString() + "\n";
|
|
|
|
readDataStr += " vectorValue:[2]" + readVectorInArray.at(1).asString() + "\n";
|
|
|
|
|
|
|
|
// read bool data
|
2020-08-18 11:33:18 +08:00
|
|
|
readDataStr += " boolValue:" + StringUtils::format("%d", readArray.at(3).asBool()) + "\n";
|
2015-07-07 14:06:59 +08:00
|
|
|
|
|
|
|
// read int data
|
2020-08-18 11:33:18 +08:00
|
|
|
readDataStr += " intValue:" + StringUtils::format("%d", readArray.at(4).asInt()) + "\n";
|
2015-07-07 14:06:59 +08:00
|
|
|
|
|
|
|
// read float data
|
2020-08-18 11:33:18 +08:00
|
|
|
readDataStr += " floatValue:" + StringUtils::format("%f", readArray.at(5).asFloat()) + "\n";
|
2015-07-07 14:06:59 +08:00
|
|
|
|
|
|
|
// read double data
|
2020-08-18 11:33:18 +08:00
|
|
|
readDataStr += " doubleValue:" + StringUtils::format("%f", readArray.at(6).asDouble()) + "\n";
|
2015-07-07 14:06:59 +08:00
|
|
|
|
|
|
|
readResult->setString(readDataStr);
|
|
|
|
}
|
|
|
|
|
|
|
|
void TestWriteValueVector::onExit()
|
|
|
|
{
|
|
|
|
FileUtilsDemo::onExit();
|
|
|
|
}
|
|
|
|
|
|
|
|
std::string TestWriteValueVector::title() const
|
|
|
|
{
|
|
|
|
return "FileUtils: TestWriteValueVector to files";
|
|
|
|
}
|
|
|
|
|
|
|
|
std::string TestWriteValueVector::subtitle() const
|
|
|
|
{
|
|
|
|
return "";
|
|
|
|
}
|
2015-07-13 22:44:40 +08:00
|
|
|
|
|
|
|
// TestUnicodePath
|
|
|
|
|
|
|
|
void TestUnicodePath::onEnter()
|
|
|
|
{
|
|
|
|
FileUtilsDemo::onEnter();
|
|
|
|
auto s = Director::getInstance()->getWinSize();
|
|
|
|
auto util = FileUtils::getInstance();
|
2016-04-26 13:37:22 +08:00
|
|
|
|
2015-07-13 22:44:40 +08:00
|
|
|
int x = s.width/2,
|
|
|
|
y = s.height/5;
|
|
|
|
Label* label = nullptr;
|
2016-04-26 13:37:22 +08:00
|
|
|
|
2015-07-13 22:44:40 +08:00
|
|
|
std::string dir = "中文路径/";
|
|
|
|
std::string filename = "测试文件.test";
|
2015-07-17 15:20:49 +08:00
|
|
|
|
2015-07-13 22:44:40 +08:00
|
|
|
std::string act;
|
2015-07-17 15:20:49 +08:00
|
|
|
auto getMsg = [&act](bool b, const std::string& path)-> std::string
|
2015-07-13 22:44:40 +08:00
|
|
|
{
|
2015-07-17 15:20:49 +08:00
|
|
|
char msg[512];
|
2015-07-13 22:44:40 +08:00
|
|
|
snprintf((char *)msg, 512, "%s for %s path: \"%s\"", b ? "success" : "failed", act.c_str(), path.c_str());
|
2015-07-17 15:20:49 +08:00
|
|
|
return std::string(msg);
|
2015-07-13 22:44:40 +08:00
|
|
|
};
|
2016-04-26 13:37:22 +08:00
|
|
|
|
2015-07-13 22:44:40 +08:00
|
|
|
// Check whether unicode dir should be create or not
|
|
|
|
std::string dirPath = util->getWritablePath() + dir;
|
|
|
|
if (!util->isDirectoryExist(dirPath))
|
|
|
|
{
|
|
|
|
util->createDirectory(dirPath);
|
|
|
|
}
|
2016-04-26 13:37:22 +08:00
|
|
|
|
2015-07-13 22:44:40 +08:00
|
|
|
act = "create";
|
|
|
|
bool isExist = util->isDirectoryExist(dirPath);
|
|
|
|
label = Label::createWithSystemFont(getMsg(isExist, dirPath), "", 12, Size(s.width, 0));
|
|
|
|
label->setPosition(x, y * 4);
|
|
|
|
this->addChild(label);
|
2016-04-26 13:37:22 +08:00
|
|
|
|
2015-07-13 22:44:40 +08:00
|
|
|
if (isExist)
|
|
|
|
{
|
|
|
|
// Check whether unicode file should be create or not
|
|
|
|
std::string filePath = dirPath + filename;
|
|
|
|
if (! util->isFileExist(filePath))
|
|
|
|
{
|
|
|
|
std::string writeDataStr = " 测试字符串.";
|
|
|
|
Data writeData;
|
|
|
|
writeData.copy((unsigned char *)writeDataStr.c_str(), writeDataStr.size());
|
|
|
|
util->writeDataToFile(writeData, filePath);
|
|
|
|
}
|
2016-04-26 13:37:22 +08:00
|
|
|
|
2015-07-13 22:44:40 +08:00
|
|
|
isExist = util->isFileExist(filePath);
|
|
|
|
label = Label::createWithSystemFont(getMsg(isExist, filePath), "", 12, Size(s.width, 0));
|
|
|
|
label->setPosition(x, y * 3);
|
|
|
|
this->addChild(label);
|
2016-04-26 13:37:22 +08:00
|
|
|
|
2015-07-13 22:44:40 +08:00
|
|
|
act = "remove";
|
|
|
|
if (isExist)
|
|
|
|
{
|
|
|
|
// read file content and log it
|
|
|
|
unsigned char* buffer = nullptr;
|
|
|
|
Data readData = util->getDataFromFile(filePath);
|
|
|
|
buffer = (unsigned char*)malloc(sizeof(unsigned char) * (readData.getSize() + 1));
|
|
|
|
memcpy(buffer, readData.getBytes(), readData.getSize());
|
|
|
|
buffer[readData.getSize()] = '\0';
|
|
|
|
// vc can't treat unicode string correctly, don't use unicode string in code
|
|
|
|
log("The content of file from writable path: %s", buffer);
|
|
|
|
free(buffer);
|
2016-04-26 13:37:22 +08:00
|
|
|
|
2015-07-13 22:44:40 +08:00
|
|
|
// remove test file
|
|
|
|
label = Label::createWithSystemFont(getMsg(util->removeFile(filePath), filePath), "", 12, Size(s.width, 0));
|
|
|
|
label->setPosition(x, y * 2);
|
|
|
|
this->addChild(label);
|
|
|
|
}
|
2016-04-26 13:37:22 +08:00
|
|
|
|
2015-07-13 22:44:40 +08:00
|
|
|
// remove test dir
|
|
|
|
label = Label::createWithSystemFont(getMsg(util->removeDirectory(dirPath), dirPath), "", 12, Size(s.width, 0));
|
|
|
|
label->setPosition(x, y * 1);
|
|
|
|
this->addChild(label);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void TestUnicodePath::onExit()
|
|
|
|
{
|
2016-04-26 13:37:22 +08:00
|
|
|
|
2015-07-13 22:44:40 +08:00
|
|
|
FileUtils *sharedFileUtils = FileUtils::getInstance();
|
|
|
|
sharedFileUtils->purgeCachedEntries();
|
|
|
|
sharedFileUtils->setFilenameLookupDictionary(ValueMap());
|
|
|
|
FileUtilsDemo::onExit();
|
|
|
|
}
|
|
|
|
|
|
|
|
std::string TestUnicodePath::title() const
|
|
|
|
{
|
|
|
|
return "FileUtils: check unicode path";
|
|
|
|
}
|
|
|
|
|
|
|
|
std::string TestUnicodePath::subtitle() const
|
|
|
|
{
|
|
|
|
return "";
|
|
|
|
}
|
2017-01-13 10:05:46 +08:00
|
|
|
|
|
|
|
// TestIsFileExist
|
|
|
|
|
|
|
|
void TestIsFileExistAsync::onEnter()
|
|
|
|
{
|
|
|
|
FileUtilsDemo::onEnter();
|
|
|
|
auto s = Director::getInstance()->getWinSize();
|
|
|
|
auto sharedFileUtils = FileUtils::getInstance();
|
|
|
|
|
|
|
|
sharedFileUtils->isFileExist("Images/grossini.png", [=](bool isExist) {
|
|
|
|
CCASSERT(std::this_thread::get_id() == Director::getInstance()->getCocos2dThreadId(), "Callback should be on cocos thread");
|
|
|
|
auto label = Label::createWithSystemFont(isExist ? "Images/grossini.png exists" : "Images/grossini.png doesn't exist", "", 20);
|
|
|
|
label->setPosition(s.width/2, s.height/3);
|
|
|
|
this->addChild(label);
|
|
|
|
|
|
|
|
isExist = sharedFileUtils->isFileExist("Images/grossini.xcf");
|
|
|
|
label = Label::createWithSystemFont(isExist ? "Images/grossini.xcf exists" : "Images/grossini.xcf doesn't exist", "", 20);
|
|
|
|
label->setPosition(s.width/2, s.height/3*2);
|
|
|
|
this->addChild(label);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
void TestIsFileExistAsync::onExit()
|
|
|
|
{
|
|
|
|
|
|
|
|
FileUtils *sharedFileUtils = FileUtils::getInstance();
|
|
|
|
|
|
|
|
// reset filename lookup
|
|
|
|
sharedFileUtils->setFilenameLookupDictionary(ValueMap());
|
|
|
|
|
|
|
|
FileUtilsDemo::onExit();
|
|
|
|
}
|
|
|
|
|
|
|
|
std::string TestIsFileExistAsync::title() const
|
|
|
|
{
|
|
|
|
return "FileUtilsAsync: check whether the file exists";
|
|
|
|
}
|
|
|
|
|
|
|
|
std::string TestIsFileExistAsync::subtitle() const
|
|
|
|
{
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
|
|
|
|
void TestIsDirectoryExistAsync::onEnter()
|
|
|
|
{
|
|
|
|
FileUtilsDemo::onEnter();
|
|
|
|
auto s = Director::getInstance()->getWinSize();
|
|
|
|
auto util = FileUtils::getInstance();
|
|
|
|
int x = s.width/2, y = s.height/3;
|
|
|
|
|
|
|
|
std::string dir;
|
|
|
|
auto getMsg = [](bool b, const std::string& dir)-> std::string
|
|
|
|
{
|
|
|
|
char msg[512];
|
|
|
|
snprintf((char *)msg, 512, "%s for dir: \"%s\"", b ? "success" : "failed", dir.c_str());
|
|
|
|
return std::string(msg);
|
|
|
|
};
|
|
|
|
|
|
|
|
dir = util->getWritablePath();
|
|
|
|
util->isDirectoryExist(dir, [=](bool exists) {
|
|
|
|
CCAssert(exists, "Writable path should exist");
|
|
|
|
auto label = Label::createWithSystemFont(getMsg(exists, dir), "", 20);
|
|
|
|
label->setPosition(x, y * 2);
|
|
|
|
this->addChild(label);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
void TestIsDirectoryExistAsync::onExit()
|
|
|
|
{
|
|
|
|
|
|
|
|
FileUtils *sharedFileUtils = FileUtils::getInstance();
|
|
|
|
|
|
|
|
// reset filename lookup
|
|
|
|
sharedFileUtils->purgeCachedEntries();
|
|
|
|
|
|
|
|
FileUtilsDemo::onExit();
|
|
|
|
}
|
|
|
|
|
|
|
|
std::string TestIsDirectoryExistAsync::title() const
|
|
|
|
{
|
|
|
|
return "FileUtilsAsync: check whether the directory exists";
|
|
|
|
}
|
|
|
|
|
|
|
|
std::string TestIsDirectoryExistAsync::subtitle() const
|
|
|
|
{
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
|
|
|
|
void TestFileFuncsAsync::onEnter()
|
|
|
|
{
|
|
|
|
FileUtilsDemo::onEnter();
|
|
|
|
auto s = Director::getInstance()->getWinSize();
|
|
|
|
auto sharedFileUtils = FileUtils::getInstance();
|
|
|
|
|
|
|
|
int x = s.width/2,
|
|
|
|
y = s.height/5;
|
|
|
|
|
|
|
|
std::string filename = "__test.test";
|
|
|
|
std::string filename2 = "__newtest.test";
|
|
|
|
std::string filepath = sharedFileUtils->getWritablePath() + filename;
|
|
|
|
std::string content = "Test string content to put into created file";
|
|
|
|
std::string msg;
|
|
|
|
|
|
|
|
FILE *out = fopen(filepath.c_str(), "w");
|
|
|
|
fputs(content.c_str(), out);
|
|
|
|
fclose(out);
|
|
|
|
|
|
|
|
|
|
|
|
sharedFileUtils->isFileExist(filepath, [=](bool exists) {
|
|
|
|
CCASSERT(exists, "File could not be found");
|
|
|
|
auto label = Label::createWithSystemFont("Test file '__test.test' created", "", 20);
|
|
|
|
label->setPosition(x, y * 4);
|
|
|
|
this->addChild(label);
|
|
|
|
|
|
|
|
sharedFileUtils->getFileSize(filepath, [=](long size) {
|
|
|
|
auto msg = StringUtils::format("getFileSize: Test file size equals %ld", size);
|
|
|
|
auto label = Label::createWithSystemFont(msg, "", 20);
|
|
|
|
label->setPosition(x, y * 3);
|
|
|
|
this->addChild(label);
|
|
|
|
|
|
|
|
sharedFileUtils->renameFile(sharedFileUtils->getWritablePath(), filename, filename2, [=] (bool success) {
|
|
|
|
CCASSERT(success, "Was not able to properly rename file");
|
|
|
|
auto label = Label::createWithSystemFont("renameFile: Test file renamed to '__newtest.test'", "", 20);
|
|
|
|
label->setPosition(x, y * 2);
|
|
|
|
this->addChild(label);
|
|
|
|
|
|
|
|
sharedFileUtils->removeFile(sharedFileUtils->getWritablePath() + filename2, [=](bool success) {
|
|
|
|
CCASSERT(success, "Was not able to remove file");
|
|
|
|
auto label = Label::createWithSystemFont("removeFile: Test file removed", "", 20);
|
|
|
|
label->setPosition(x, y * 1);
|
|
|
|
this->addChild(label);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
std::string TestFileFuncsAsync::title() const
|
|
|
|
{
|
|
|
|
return "FileUtilsAsync: file control functions";
|
|
|
|
}
|
|
|
|
|
|
|
|
std::string TestFileFuncsAsync::subtitle() const
|
|
|
|
{
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
|
|
|
|
void TestWriteStringAsync::onEnter()
|
|
|
|
{
|
|
|
|
FileUtilsDemo::onEnter();
|
|
|
|
|
|
|
|
auto winSize = Director::getInstance()->getWinSize();
|
|
|
|
|
|
|
|
auto writeResult = Label::createWithTTF("show writeResult", "fonts/Thonburi.ttf", 18);
|
|
|
|
this->addChild(writeResult);
|
|
|
|
writeResult->setPosition(winSize.width / 2, winSize.height * 3 / 4);
|
|
|
|
|
|
|
|
auto readResult = Label::createWithTTF("show readResult", "fonts/Thonburi.ttf", 18);
|
|
|
|
this->addChild(readResult);
|
|
|
|
readResult->setPosition(winSize.width / 2, winSize.height / 3);
|
|
|
|
|
|
|
|
std::string writablePath = FileUtils::getInstance()->getWritablePath();
|
|
|
|
std::string fileName = "writeStringTest.txt";
|
|
|
|
|
|
|
|
// writeTest
|
|
|
|
std::string writeDataStr = "the string data will be write into a file";
|
|
|
|
std::string fullPath = writablePath + fileName;
|
|
|
|
|
|
|
|
FileUtils::getInstance()->writeStringToFile(writeDataStr, fullPath, [=](bool success)
|
|
|
|
{
|
|
|
|
CCASSERT(success, "Write String to data failed");
|
|
|
|
writeResult->setString("write success:" + writeDataStr);
|
|
|
|
|
|
|
|
FileUtils::getInstance()->getStringFromFile(fullPath, [=](const std::string& value) {
|
|
|
|
CCASSERT(!value.empty(), "String should be readable");
|
|
|
|
readResult->setString("read success: " + value);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
void TestWriteStringAsync::onExit()
|
|
|
|
{
|
|
|
|
FileUtilsDemo::onExit();
|
|
|
|
}
|
|
|
|
|
|
|
|
std::string TestWriteStringAsync::title() const
|
|
|
|
{
|
|
|
|
return "FileUtilsAsync: TestWriteString to files";
|
|
|
|
}
|
|
|
|
|
|
|
|
std::string TestWriteStringAsync::subtitle() const
|
|
|
|
{
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
|
|
|
|
void TestWriteDataAsync::onEnter()
|
|
|
|
{
|
|
|
|
FileUtilsDemo::onEnter();
|
|
|
|
|
|
|
|
auto winSize = Director::getInstance()->getWinSize();
|
|
|
|
|
|
|
|
auto writeResult = Label::createWithTTF("show writeResult", "fonts/Thonburi.ttf", 18);
|
|
|
|
this->addChild(writeResult);
|
|
|
|
writeResult->setPosition(winSize.width / 2, winSize.height * 3 / 4);
|
|
|
|
|
|
|
|
auto readResult = Label::createWithTTF("show readResult", "fonts/Thonburi.ttf", 18);
|
|
|
|
this->addChild(readResult);
|
|
|
|
readResult->setPosition(winSize.width / 2, winSize.height / 3);
|
|
|
|
|
|
|
|
std::string writablePath = FileUtils::getInstance()->getWritablePath();
|
|
|
|
std::string fileName = "writeDataTest.txt";
|
|
|
|
|
|
|
|
// writeTest
|
|
|
|
std::string writeDataStr = "the binary data will be write into a file";
|
|
|
|
Data writeData;
|
|
|
|
writeData.copy((unsigned char *)writeDataStr.c_str(), writeDataStr.size());
|
|
|
|
std::string fullPath = writablePath + fileName;
|
|
|
|
|
|
|
|
|
|
|
|
FileUtils::getInstance()->writeDataToFile(writeData, fullPath, [=](bool success) {
|
|
|
|
if (success)
|
|
|
|
{
|
|
|
|
writeResult->setString("Write result success");
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
writeResult->setString("Write result failure");
|
|
|
|
}
|
|
|
|
|
|
|
|
FileUtils::getInstance()->getDataFromFile(fullPath, [=](const Data& readData) {
|
|
|
|
auto buffer = (unsigned char*)malloc(sizeof(unsigned char) * (readData.getSize() + 1));
|
|
|
|
memcpy(buffer, readData.getBytes(), readData.getSize());
|
|
|
|
buffer[readData.getSize()] = '\0';
|
|
|
|
std::string readDataStr((const char*)buffer);
|
|
|
|
free(buffer);
|
|
|
|
|
|
|
|
readResult->setString("read success:" + readDataStr);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
void TestWriteDataAsync::onExit()
|
|
|
|
{
|
|
|
|
FileUtilsDemo::onExit();
|
|
|
|
}
|
|
|
|
|
|
|
|
std::string TestWriteDataAsync::title() const
|
|
|
|
{
|
|
|
|
return "FileUtilsAsync: TestWriteData to files";
|
|
|
|
}
|
|
|
|
|
|
|
|
std::string TestWriteDataAsync::subtitle() const
|
|
|
|
{
|
|
|
|
return "";
|
|
|
|
}
|
metal support for cocos2d-x (#19305)
* remove deprecated files
* remove some deprecated codes
* remove more deprecated codes
* remove ui deprecated codes
* remove more deprecated codes
* remove deprecated codes in ccmenuitem
* remove more deprecated codes in ui
* remove more deprecated codes in ui
* remove more deprecated codes in ui
* remove more deprecated codes
* remove more deprecated codes
* remove more deprecated codes
* remove vr related codes and ignore some modules
* remove allocator
* remove some config
* 【Feature】add back-end project file
* [Feature] add back-end file
* add pipeline descriptor and shader cache
* [Feature] support sprite for backend
* [Feature] remove unneeded code
* [Feature] according to es2.0 spec, you must use clamp-to-edge as texture wrap mode, and no mipmapping for non-power-of-two texture
* [Feature] set texture wrap mode to clamp-to-edge, and no mipmapping for non-power-of-two texture
* [Feature] remove macro define to .cpp file
* [Feature] add log info
* [Feature] add PipelineDescriptor for TriangleCommand
* [Feature] add PipelineDescriptor object as member of TriangleCommand
* [Feature] add getPipelineDescriptor method
* add renderbackend
* complete pipeline descriptor
* [Feature] add viewport in RenderCommand
* set viewport when rendrering
* [Feature] occur error when using RendererBackend, to be fixed.
* a workaround to fix black screen on macOS 10.14 (#19090)
* add rendererbackend init function
* fix typo
* [Feature] modify testFile
* [BugFix] modify shader path
* [Feature] set default viewport
* fix projection
* [Feature] modify log info
* [BugFix] change viewport data type to int
* [BugFix] add BindGroup to PipelienDescriptor
* [BugFix] change a_position to vec3 in sprite.vert
* [BugFix] set vertexLayout according to V3F_C4B_T2F structure
* [Feature] revert a_position to vec4
* [Feature] renderer should not use gl codes directly
* [Feature] it's better not use default value parameter
* fix depth test setting
* rendererbackend -> renderer
* clear color and depth at begin
* add metal backend
* metal support normalized attribute
* simplify codes
* update external
* add render pass desctriptor in pipeline descriptor
* fix warnings
* fix crash and memeory leak
* refactor Texture2D
* put pipeline descriptor into render command
* simplify codes
* [Feature] update Sprite
* fix crash when closing app
* [Feature] update SpriteBatchNode and TextureAtlas
* support render texture(not finish)
* [Feature] remove unused code
* make tests work on mac
* fix download-deps path error
* make tests work on iOS
* [Feature] support ttf under normal label effect
* refactor triangle command processing
* let renderer handle more common commands
* refactor backend
* make render texture work
* [Feature] refactor backend for GL
* [Feature]Renaming to make it easy to understand
* [Feature] change warp mode to CLAMP_TO_EDGE
* fix ghost
* simplify visit render queue logic
* support progress timer without rial mode
* support partcile system
* Feature/update label (#149)
* [BugFix] fix compile error
* [Feature] support outline effect in ios
* [Feature] add shader file
* [BugFix] fix begin and end RenderPass
* [Feature] update CustomCommand
* [Feature] revert project.pbxproj
* [Feature] simplify codes
* [BugFix] pack AI88 to RGBA8888 only when outline enable
* [Feature] support shadow effect in Label
* [Feature] support BMFont
* [Feature] support glow effect
* [Feature] simplify shader files
* LabelAtlas work
* handle blend function correctly
* support tile map
* don't share buffer in metal
* alloc buffer size as needed
* support more tilemap
* Merge branch 'minggo/metal-support' into feature/updateLabel
* minggo/metal-support:
support tile map
handle blend function correctly
LabelAtlas work
Feature/update label (#149)
support partcile system
# Conflicts:
# cocos/2d/CCLabel.cpp
# cocos/2d/CCSprite.cpp
# cocos/2d/CCSpriteBatchNode.cpp
# cocos/renderer/CCQuadCommand.cpp
# cocos/renderer/CCQuadCommand.h
* render texture work without saving file
* use global viewport
* grid3d works
* remove grabber
* tiled3d works
* [BugFix] fix label bug
* [Feature] add updateSubData for buffer
* [Feature] remove setVertexCount
* support depth test
* add callback command
* [Feature] add UITest
* [Feature] update UITest
* [Feature] remove unneeded codes
* fix custom command issue
* fix layer color blend issue
* [BugFix] fix iOS compile error
* [Feature] remove unneeded codes
* [Feature] fix updateVertexBuffer
* layerradial works
* add draw test back
* fix batch issue
* fix compiling error
* [BugFix] support ETC1
* [BugFix] get the correct pipelineDescriptor
* [BugFix] skip draw when backendTexture nullptr
* clipping node support
* [Feature] add shader files
* fix stencil issue in metal
* [Feature] update UILayoutTest
* [BugFix] skip drawing when vertexCount is zero
* refactor renderer
* add set global z order for stencil manager commands
* fix warnings caused by type
* remove viewport in render command
* [Feature] fix warnings caused by type
* [BugFix] clear vertexCount and indexCount for CustomComand when needed
* [Feature] update clear for CustomCommand
* ios use metal
* fix viewport issue
* fix LayerColorGradient crash
* [cmake] transport to android and windows (#160)
* save point 1
* compile on windows
* run on android
* revert useless change
* android set CC_ENABLE_CACHE_TEXTURE_DATA to 1
* add initGlew
* fix android crash
* add TODO new-renderer
* review update
* revert onGLFWWindowPosCallback
* fix android compiling error
* Impl progress radial (#162)
* progresstimer add radial impl
* default drawType to element
* dec invoke times of createVertexBuffer (#163)
* support depth/stencil format for gl backend
* simplify progress timer codes
* support motionstreak, effect is wrong
* fix motionstreak issue
* [Feature] update Scissor Test (#161)
* [Feature] update Scissor Test
* [Feature] update ScissorTest
* [Feature] rename function
* [Feature] get constant reference if needed
* [Feature] show render status (#164)
* improve performance
* fix depth state
* fill error that triangle vertex/index number bigger than buffer
* fix compiline error in release mode
* fix buffer conflict between CPU and GPU on iOS/macOS
* Renderer refactor (#165)
* use one vertes/index buffer with opengl
* fix error on windows
* custom command support index format config
* CCLayer: compact vertex data structure
* update comment
* fix doc
* support fast tilemap
* pass index format instead
* fix some wrong effect
* fix render texture error
* fix texture per-element size
* fix texture format error
* BlendFunc type refactor, GLenum -> backend::BlendFactor (#167)
* BlendFunc use backend::BlendFactor as inner field
* update comments
* use int to replace GLenum
* update xcode project fiel
* rename to GLBlendConst
* add ccConstants.h
* update xcode project file
* update copyright
* remove primitive command
* remove CCPrimitive.cpp/.h
* remove deprecated files
* remove unneeded files
* remove multiple view support
* remove multiple view support
* remove the usage of frame buffer in camera
* director don't use frame buffer
* remove FrameBuffer
* remove BatchCommand
* add some api reference
* add physics2d back
* fix crash when close app on mac
* improve render texture
* fix rendertexture issue
* fix rendertexture issue
* simplify codes
* CMake support for mac & ios (#169)
* update cmake
* fix compile error
* update 3rd libs version
* remove CCThread.h/.cpp
* remove ccthread
* use audio engine to implement simple audio engine
* remove unneeded codes
* remove deprecated codes
* remove winrt macro
* remove CC_USE_WIC
* set partcile blend function in more elegant way
* remove unneeded codes
* remove unneeded codes
* cmake works on windows
* update project setting
* improve performance
* GLFloat -> float
* sync v3 cmake improvements into metal-support (#172)
* pick: modern cmake, compile definitions improvement (#19139)
* modern cmake, use target_compile_definitions partly
* simplify macro define, remove USE_*
* modern cmake, macro define
* add physics 2d macro define into ccConfig.h
* remove USE_CHIPMUNK macro in build.gradle
* remove CocosSelectModule.cmake
* shrink useless define
* simplify compile options config, re-add if necessary
* update external for tmp CI test
* un-quote target_compile_options value
* add "-g" parameter only when debug mode
* keep single build type when generator Xcode & VS projecy
* update external for tmp CI tes
* add static_cast<char>(-1), fix -Wc++11-narrowing
* simplify win32 compile define
* not modify code, only improve compile options
# Conflicts:
# .gitignore
# cmake/Modules/CocosConfigDepend.cmake
# cocos/CMakeLists.txt
# external/config.json
# tests/cpp-tests/CMakeLists.txt
* modern cmake, improve cmake_compiler_flags (#19145)
* cmake_compiler_flags
* Fix typo
* Fix typo2
* Remove chanages from Android.mk
* correct lua template cmake build (#19149)
* don't add -Wno-deprecated into jsb target
* correct lua template cmake build
* fix win32 lua template compile error
* prevent cmake in-source-build friendly (#19151)
* pick: Copy resources to "Resources/" on win32 like in linux configuration
* add "/Z7" for cpp-tests on windows
* [cmake] fix iOS xcode property setting failed (#19208)
* fix iOS xcode property setting failed
* use search_depend_libs_recursive at dlls collect
* fix typo
* [cmake] add find_host_library into iOS toolchain file (#19230)
* pick: [lua android] use luajit & template cmake update (#19239)
* increase cmake stability , remove tests/CMakeLists.txt (#19261)
* cmake win32 Precompiled header (#19273)
* Precompiled header
* Fix
* Precompiled header for cocos
* Precompiled header jscocos2d
* Fix for COCOS2D_DEBUG is always 1 on Android (#19291)
Related #19289
* little build fix, tests cpp-tests works on mac
* sync v3 build related codes into metal-support (#173)
* strict initialization for std::array
* remove proj.win32 project configs
* modern cmake, cmake_cleanup_remove_unused_variables (#19146)
* Switch travis CI to xenial (#19207)
* Switch travis CI to xenial
* Remove language: android
* Set language: cpp
* Fix java problem
* Update sdkmanager
* Fix sdkmanger
* next sdkmanager fix
* Remove xenial from android
* revert to sdk-tools-{system}-3859397
* Remove linux cmake install
* Update before-install.sh
* Update .travis.yml
* Simplify install-deps-linux.sh, tested on Ubuntu 16.04 (#19212)
* Simplify install-deps-linux.sh
* Cleanup
* pick: install ninja
* update cocos2d-console submodule
* for metal-support alpha release, we only test cpp
* add HelloCpp into project(Cocos2d-x) for tmp test
* update extenal metal-support-4
* update uniform setting
* [Feature] update BindGroup
* [Feature] empty-test
* [Feature] cpp-test
* [Feature] fix GL compiler error
* [Feature] fix GL crash
* [Feature] empty-test
* [Feature] cpp-tests
* [feature] improve frameRate
* [feature] fix opengl compile error
* [feature] fix opengl compile error
* [BugFix] fix compute maxLocation error
* [Feature] update setting unifrom
* [Feature] fix namespace
* [Feature] remove unneeded code
* [Bugfix] fix project file
* [Feature] update review
* [texture2d] impl texture format support (#175)
* texture update
* update
* update texture
* commit
* compile on windows
* ddd
* rename
* rename methods
* no crash
* save gl
* save
* save
* rename
* move out pixel format convert functions
* metal crash
* update
* update android
* support gles compressed texture format
* support more compress format
* add more conversion methods
* ss
* save
* update conversion methods
* add PVRTC format support
* reformat
* add marco linux
* fix GL marcro
* pvrtc supported only by ios 8.0+
* remove unused cmake
* revert change
* refactor Texture2D::initWithData
* fix conversion log
* refactor Texture2D::initWithData
* remove some OpenGL constants for PVRTC
* add todo
* fix typo
* AutoTest works on mac/iOS by disable part cases, sync v3 bug fix (#174)
* review cpp-tests, and fix part issues on start auto test
* sync png format fix: Node:Particle3D abnormal texture effects #19204
* fix cpp-tests SpritePolygon crash, wrong png format (#19170)
* fix wrong png convert format from sRGB to Gray
* erase plist index if all frames was erased
* test_A8.png have I8 format, fix it
* [CCSpriteCache] allow re-add plist & add testcase (#19175)
* allow re-add plist & add testcase
* remove comments/rename method/update testcase
* fix isSpriteFramesWithFileLoaded & add testcase
* remove used variable
* remove unused variable
* fix double free issues when js/lua-tests exit on iOS (#19236)
* disable part cases, AutoTest works without crash on mac
* update cocos2dx files json, to test cocos new next
* fix spritecache plist parsing issue (#19269)
* [linux] Fix FileUtils::getContents with folder (#19157)
* fix FileUtils::getContents on linux/mac
* use stat.st_mode
* simplify
* [CCFileUtils] win32 getFileSize (#19176)
* win32 getFileSize
* fix stat
* [cpp test-Android]20:FileUtils/2 change title (#19197)
* sync #19200
* sync #19231
* [android lua] improve performance of lua loader (#19234)
* [lua] improve performance of lua loader
* remove cache fix
* Revert "fix spritecache plist parsing issue (#19269)"
This reverts commit f3a85ece4307a7b90816c34489d1ed2c8fd11baf.
* remove win32 project files ref in template.json
* add metal framework lnk ref into cpp template
* test on iOS, and disable part cases
* alBufferData instead of alBufferDataStatic for small audio file on Apple (#19227)
* changes AudioCache to use alBufferData instead of alBufferDataStatic
(also makes test 19 faster to trigger openal bugs faster)
The original problem: CrashIfClientProvidedBogusAudioBufferList
https://github.com/cocos2d/cocos2d-x/issues/18948
is not happening anymore, but there's still a not very frequent issue
that makes OpenAL crash with a call stack like this.
AudioCache::readDataTask > alBufferData > CleanUpDeadBufferList
It happes more frequently when the device is "cold", which means after
half an hour of not using the device (locked).
I could not find the actual source code for iOS OpenAL, so I used the
macOS versions:
https://opensource.apple.com/source/OpenAL/OpenAL-48.7/Source/OpenAL/oalImp.cpp.auto.html
They seem to use CAGuard.h to make sure the dead buffer list
has no threading issues. I'm worried because the CAGuard code I found
has macos and win32 define but no iOS, so I'm not sure. I guess the
iOS version is different and has the guard.
I could not find a place in the code that's unprotected by the locks
except the InitializeBufferMap() which should not be called more than
once from cocos, and there's a workaround in AudioEngine-impl for it.
I reduced the occurence of the CleanUpDeadBufferList crash by moving
the guard in ~AudioCache to cover the alDeleteBuffers call.
* remove hack method "setTimeout" on audio
* AutoTest works on iOS
* support set ios deployment target for root project
* enable all texture2d cases, since Jiang have fixed
* add CCTextureUtils to xcode project file (#176)
* add leak cases for SpriteFrameCache (#177)
* re-add SpriteFrameCache cases
* update template file json
* Update SpriteFrameCacheTest.cpp
* fix compiling error
2019-01-18 15:08:25 +08:00
|
|
|
|
|
|
|
void TestListFiles::onEnter()
|
|
|
|
{
|
|
|
|
FileUtilsDemo::onEnter();
|
|
|
|
|
|
|
|
auto winSize = Director::getInstance()->getWinSize();
|
|
|
|
|
|
|
|
auto infoLabel = Label::createWithTTF("show file count, should not be 0", "fonts/Thonburi.ttf", 18);
|
|
|
|
this->addChild(infoLabel);
|
|
|
|
infoLabel->setPosition(winSize.width / 2, winSize.height * 3 / 4);
|
|
|
|
|
|
|
|
auto cntLabel = Label::createWithTTF("show readResult", "fonts/Thonburi.ttf", 18);
|
|
|
|
this->addChild(cntLabel);
|
|
|
|
cntLabel->setPosition(winSize.width / 2, winSize.height / 3);
|
|
|
|
// writeTest
|
2019-04-10 15:09:30 +08:00
|
|
|
std::vector<std::string> listFonts = FileUtils::getInstance()->listFiles("fonts");
|
|
|
|
auto defaultPath = FileUtils::getInstance()->getDefaultResourceRootPath();
|
|
|
|
std::vector<std::string> list = FileUtils::getInstance()->listFiles (defaultPath);
|
metal support for cocos2d-x (#19305)
* remove deprecated files
* remove some deprecated codes
* remove more deprecated codes
* remove ui deprecated codes
* remove more deprecated codes
* remove deprecated codes in ccmenuitem
* remove more deprecated codes in ui
* remove more deprecated codes in ui
* remove more deprecated codes in ui
* remove more deprecated codes
* remove more deprecated codes
* remove more deprecated codes
* remove vr related codes and ignore some modules
* remove allocator
* remove some config
* 【Feature】add back-end project file
* [Feature] add back-end file
* add pipeline descriptor and shader cache
* [Feature] support sprite for backend
* [Feature] remove unneeded code
* [Feature] according to es2.0 spec, you must use clamp-to-edge as texture wrap mode, and no mipmapping for non-power-of-two texture
* [Feature] set texture wrap mode to clamp-to-edge, and no mipmapping for non-power-of-two texture
* [Feature] remove macro define to .cpp file
* [Feature] add log info
* [Feature] add PipelineDescriptor for TriangleCommand
* [Feature] add PipelineDescriptor object as member of TriangleCommand
* [Feature] add getPipelineDescriptor method
* add renderbackend
* complete pipeline descriptor
* [Feature] add viewport in RenderCommand
* set viewport when rendrering
* [Feature] occur error when using RendererBackend, to be fixed.
* a workaround to fix black screen on macOS 10.14 (#19090)
* add rendererbackend init function
* fix typo
* [Feature] modify testFile
* [BugFix] modify shader path
* [Feature] set default viewport
* fix projection
* [Feature] modify log info
* [BugFix] change viewport data type to int
* [BugFix] add BindGroup to PipelienDescriptor
* [BugFix] change a_position to vec3 in sprite.vert
* [BugFix] set vertexLayout according to V3F_C4B_T2F structure
* [Feature] revert a_position to vec4
* [Feature] renderer should not use gl codes directly
* [Feature] it's better not use default value parameter
* fix depth test setting
* rendererbackend -> renderer
* clear color and depth at begin
* add metal backend
* metal support normalized attribute
* simplify codes
* update external
* add render pass desctriptor in pipeline descriptor
* fix warnings
* fix crash and memeory leak
* refactor Texture2D
* put pipeline descriptor into render command
* simplify codes
* [Feature] update Sprite
* fix crash when closing app
* [Feature] update SpriteBatchNode and TextureAtlas
* support render texture(not finish)
* [Feature] remove unused code
* make tests work on mac
* fix download-deps path error
* make tests work on iOS
* [Feature] support ttf under normal label effect
* refactor triangle command processing
* let renderer handle more common commands
* refactor backend
* make render texture work
* [Feature] refactor backend for GL
* [Feature]Renaming to make it easy to understand
* [Feature] change warp mode to CLAMP_TO_EDGE
* fix ghost
* simplify visit render queue logic
* support progress timer without rial mode
* support partcile system
* Feature/update label (#149)
* [BugFix] fix compile error
* [Feature] support outline effect in ios
* [Feature] add shader file
* [BugFix] fix begin and end RenderPass
* [Feature] update CustomCommand
* [Feature] revert project.pbxproj
* [Feature] simplify codes
* [BugFix] pack AI88 to RGBA8888 only when outline enable
* [Feature] support shadow effect in Label
* [Feature] support BMFont
* [Feature] support glow effect
* [Feature] simplify shader files
* LabelAtlas work
* handle blend function correctly
* support tile map
* don't share buffer in metal
* alloc buffer size as needed
* support more tilemap
* Merge branch 'minggo/metal-support' into feature/updateLabel
* minggo/metal-support:
support tile map
handle blend function correctly
LabelAtlas work
Feature/update label (#149)
support partcile system
# Conflicts:
# cocos/2d/CCLabel.cpp
# cocos/2d/CCSprite.cpp
# cocos/2d/CCSpriteBatchNode.cpp
# cocos/renderer/CCQuadCommand.cpp
# cocos/renderer/CCQuadCommand.h
* render texture work without saving file
* use global viewport
* grid3d works
* remove grabber
* tiled3d works
* [BugFix] fix label bug
* [Feature] add updateSubData for buffer
* [Feature] remove setVertexCount
* support depth test
* add callback command
* [Feature] add UITest
* [Feature] update UITest
* [Feature] remove unneeded codes
* fix custom command issue
* fix layer color blend issue
* [BugFix] fix iOS compile error
* [Feature] remove unneeded codes
* [Feature] fix updateVertexBuffer
* layerradial works
* add draw test back
* fix batch issue
* fix compiling error
* [BugFix] support ETC1
* [BugFix] get the correct pipelineDescriptor
* [BugFix] skip draw when backendTexture nullptr
* clipping node support
* [Feature] add shader files
* fix stencil issue in metal
* [Feature] update UILayoutTest
* [BugFix] skip drawing when vertexCount is zero
* refactor renderer
* add set global z order for stencil manager commands
* fix warnings caused by type
* remove viewport in render command
* [Feature] fix warnings caused by type
* [BugFix] clear vertexCount and indexCount for CustomComand when needed
* [Feature] update clear for CustomCommand
* ios use metal
* fix viewport issue
* fix LayerColorGradient crash
* [cmake] transport to android and windows (#160)
* save point 1
* compile on windows
* run on android
* revert useless change
* android set CC_ENABLE_CACHE_TEXTURE_DATA to 1
* add initGlew
* fix android crash
* add TODO new-renderer
* review update
* revert onGLFWWindowPosCallback
* fix android compiling error
* Impl progress radial (#162)
* progresstimer add radial impl
* default drawType to element
* dec invoke times of createVertexBuffer (#163)
* support depth/stencil format for gl backend
* simplify progress timer codes
* support motionstreak, effect is wrong
* fix motionstreak issue
* [Feature] update Scissor Test (#161)
* [Feature] update Scissor Test
* [Feature] update ScissorTest
* [Feature] rename function
* [Feature] get constant reference if needed
* [Feature] show render status (#164)
* improve performance
* fix depth state
* fill error that triangle vertex/index number bigger than buffer
* fix compiline error in release mode
* fix buffer conflict between CPU and GPU on iOS/macOS
* Renderer refactor (#165)
* use one vertes/index buffer with opengl
* fix error on windows
* custom command support index format config
* CCLayer: compact vertex data structure
* update comment
* fix doc
* support fast tilemap
* pass index format instead
* fix some wrong effect
* fix render texture error
* fix texture per-element size
* fix texture format error
* BlendFunc type refactor, GLenum -> backend::BlendFactor (#167)
* BlendFunc use backend::BlendFactor as inner field
* update comments
* use int to replace GLenum
* update xcode project fiel
* rename to GLBlendConst
* add ccConstants.h
* update xcode project file
* update copyright
* remove primitive command
* remove CCPrimitive.cpp/.h
* remove deprecated files
* remove unneeded files
* remove multiple view support
* remove multiple view support
* remove the usage of frame buffer in camera
* director don't use frame buffer
* remove FrameBuffer
* remove BatchCommand
* add some api reference
* add physics2d back
* fix crash when close app on mac
* improve render texture
* fix rendertexture issue
* fix rendertexture issue
* simplify codes
* CMake support for mac & ios (#169)
* update cmake
* fix compile error
* update 3rd libs version
* remove CCThread.h/.cpp
* remove ccthread
* use audio engine to implement simple audio engine
* remove unneeded codes
* remove deprecated codes
* remove winrt macro
* remove CC_USE_WIC
* set partcile blend function in more elegant way
* remove unneeded codes
* remove unneeded codes
* cmake works on windows
* update project setting
* improve performance
* GLFloat -> float
* sync v3 cmake improvements into metal-support (#172)
* pick: modern cmake, compile definitions improvement (#19139)
* modern cmake, use target_compile_definitions partly
* simplify macro define, remove USE_*
* modern cmake, macro define
* add physics 2d macro define into ccConfig.h
* remove USE_CHIPMUNK macro in build.gradle
* remove CocosSelectModule.cmake
* shrink useless define
* simplify compile options config, re-add if necessary
* update external for tmp CI test
* un-quote target_compile_options value
* add "-g" parameter only when debug mode
* keep single build type when generator Xcode & VS projecy
* update external for tmp CI tes
* add static_cast<char>(-1), fix -Wc++11-narrowing
* simplify win32 compile define
* not modify code, only improve compile options
# Conflicts:
# .gitignore
# cmake/Modules/CocosConfigDepend.cmake
# cocos/CMakeLists.txt
# external/config.json
# tests/cpp-tests/CMakeLists.txt
* modern cmake, improve cmake_compiler_flags (#19145)
* cmake_compiler_flags
* Fix typo
* Fix typo2
* Remove chanages from Android.mk
* correct lua template cmake build (#19149)
* don't add -Wno-deprecated into jsb target
* correct lua template cmake build
* fix win32 lua template compile error
* prevent cmake in-source-build friendly (#19151)
* pick: Copy resources to "Resources/" on win32 like in linux configuration
* add "/Z7" for cpp-tests on windows
* [cmake] fix iOS xcode property setting failed (#19208)
* fix iOS xcode property setting failed
* use search_depend_libs_recursive at dlls collect
* fix typo
* [cmake] add find_host_library into iOS toolchain file (#19230)
* pick: [lua android] use luajit & template cmake update (#19239)
* increase cmake stability , remove tests/CMakeLists.txt (#19261)
* cmake win32 Precompiled header (#19273)
* Precompiled header
* Fix
* Precompiled header for cocos
* Precompiled header jscocos2d
* Fix for COCOS2D_DEBUG is always 1 on Android (#19291)
Related #19289
* little build fix, tests cpp-tests works on mac
* sync v3 build related codes into metal-support (#173)
* strict initialization for std::array
* remove proj.win32 project configs
* modern cmake, cmake_cleanup_remove_unused_variables (#19146)
* Switch travis CI to xenial (#19207)
* Switch travis CI to xenial
* Remove language: android
* Set language: cpp
* Fix java problem
* Update sdkmanager
* Fix sdkmanger
* next sdkmanager fix
* Remove xenial from android
* revert to sdk-tools-{system}-3859397
* Remove linux cmake install
* Update before-install.sh
* Update .travis.yml
* Simplify install-deps-linux.sh, tested on Ubuntu 16.04 (#19212)
* Simplify install-deps-linux.sh
* Cleanup
* pick: install ninja
* update cocos2d-console submodule
* for metal-support alpha release, we only test cpp
* add HelloCpp into project(Cocos2d-x) for tmp test
* update extenal metal-support-4
* update uniform setting
* [Feature] update BindGroup
* [Feature] empty-test
* [Feature] cpp-test
* [Feature] fix GL compiler error
* [Feature] fix GL crash
* [Feature] empty-test
* [Feature] cpp-tests
* [feature] improve frameRate
* [feature] fix opengl compile error
* [feature] fix opengl compile error
* [BugFix] fix compute maxLocation error
* [Feature] update setting unifrom
* [Feature] fix namespace
* [Feature] remove unneeded code
* [Bugfix] fix project file
* [Feature] update review
* [texture2d] impl texture format support (#175)
* texture update
* update
* update texture
* commit
* compile on windows
* ddd
* rename
* rename methods
* no crash
* save gl
* save
* save
* rename
* move out pixel format convert functions
* metal crash
* update
* update android
* support gles compressed texture format
* support more compress format
* add more conversion methods
* ss
* save
* update conversion methods
* add PVRTC format support
* reformat
* add marco linux
* fix GL marcro
* pvrtc supported only by ios 8.0+
* remove unused cmake
* revert change
* refactor Texture2D::initWithData
* fix conversion log
* refactor Texture2D::initWithData
* remove some OpenGL constants for PVRTC
* add todo
* fix typo
* AutoTest works on mac/iOS by disable part cases, sync v3 bug fix (#174)
* review cpp-tests, and fix part issues on start auto test
* sync png format fix: Node:Particle3D abnormal texture effects #19204
* fix cpp-tests SpritePolygon crash, wrong png format (#19170)
* fix wrong png convert format from sRGB to Gray
* erase plist index if all frames was erased
* test_A8.png have I8 format, fix it
* [CCSpriteCache] allow re-add plist & add testcase (#19175)
* allow re-add plist & add testcase
* remove comments/rename method/update testcase
* fix isSpriteFramesWithFileLoaded & add testcase
* remove used variable
* remove unused variable
* fix double free issues when js/lua-tests exit on iOS (#19236)
* disable part cases, AutoTest works without crash on mac
* update cocos2dx files json, to test cocos new next
* fix spritecache plist parsing issue (#19269)
* [linux] Fix FileUtils::getContents with folder (#19157)
* fix FileUtils::getContents on linux/mac
* use stat.st_mode
* simplify
* [CCFileUtils] win32 getFileSize (#19176)
* win32 getFileSize
* fix stat
* [cpp test-Android]20:FileUtils/2 change title (#19197)
* sync #19200
* sync #19231
* [android lua] improve performance of lua loader (#19234)
* [lua] improve performance of lua loader
* remove cache fix
* Revert "fix spritecache plist parsing issue (#19269)"
This reverts commit f3a85ece4307a7b90816c34489d1ed2c8fd11baf.
* remove win32 project files ref in template.json
* add metal framework lnk ref into cpp template
* test on iOS, and disable part cases
* alBufferData instead of alBufferDataStatic for small audio file on Apple (#19227)
* changes AudioCache to use alBufferData instead of alBufferDataStatic
(also makes test 19 faster to trigger openal bugs faster)
The original problem: CrashIfClientProvidedBogusAudioBufferList
https://github.com/cocos2d/cocos2d-x/issues/18948
is not happening anymore, but there's still a not very frequent issue
that makes OpenAL crash with a call stack like this.
AudioCache::readDataTask > alBufferData > CleanUpDeadBufferList
It happes more frequently when the device is "cold", which means after
half an hour of not using the device (locked).
I could not find the actual source code for iOS OpenAL, so I used the
macOS versions:
https://opensource.apple.com/source/OpenAL/OpenAL-48.7/Source/OpenAL/oalImp.cpp.auto.html
They seem to use CAGuard.h to make sure the dead buffer list
has no threading issues. I'm worried because the CAGuard code I found
has macos and win32 define but no iOS, so I'm not sure. I guess the
iOS version is different and has the guard.
I could not find a place in the code that's unprotected by the locks
except the InitializeBufferMap() which should not be called more than
once from cocos, and there's a workaround in AudioEngine-impl for it.
I reduced the occurence of the CleanUpDeadBufferList crash by moving
the guard in ~AudioCache to cover the alDeleteBuffers call.
* remove hack method "setTimeout" on audio
* AutoTest works on iOS
* support set ios deployment target for root project
* enable all texture2d cases, since Jiang have fixed
* add CCTextureUtils to xcode project file (#176)
* add leak cases for SpriteFrameCache (#177)
* re-add SpriteFrameCache cases
* update template file json
* Update SpriteFrameCacheTest.cpp
* fix compiling error
2019-01-18 15:08:25 +08:00
|
|
|
|
|
|
|
char cntBuffer[200] = { 0 };
|
2019-07-22 09:37:48 +08:00
|
|
|
snprintf(cntBuffer, 200, "'fonts/' %zu, $defaultResourceRootPath %zu",listFonts.size(), list.size());
|
2019-04-10 15:09:30 +08:00
|
|
|
|
|
|
|
for(int i=0;i<listFonts.size();i++)
|
|
|
|
{
|
|
|
|
CCLOG("fonts/ %d: \t %s", i, listFonts[i].c_str());
|
|
|
|
}
|
|
|
|
|
|
|
|
for(int i=0;i<list.size();i++)
|
|
|
|
{
|
|
|
|
CCLOG("defResRootPath %d: \t %s", i, list[i].c_str());
|
|
|
|
}
|
|
|
|
|
metal support for cocos2d-x (#19305)
* remove deprecated files
* remove some deprecated codes
* remove more deprecated codes
* remove ui deprecated codes
* remove more deprecated codes
* remove deprecated codes in ccmenuitem
* remove more deprecated codes in ui
* remove more deprecated codes in ui
* remove more deprecated codes in ui
* remove more deprecated codes
* remove more deprecated codes
* remove more deprecated codes
* remove vr related codes and ignore some modules
* remove allocator
* remove some config
* 【Feature】add back-end project file
* [Feature] add back-end file
* add pipeline descriptor and shader cache
* [Feature] support sprite for backend
* [Feature] remove unneeded code
* [Feature] according to es2.0 spec, you must use clamp-to-edge as texture wrap mode, and no mipmapping for non-power-of-two texture
* [Feature] set texture wrap mode to clamp-to-edge, and no mipmapping for non-power-of-two texture
* [Feature] remove macro define to .cpp file
* [Feature] add log info
* [Feature] add PipelineDescriptor for TriangleCommand
* [Feature] add PipelineDescriptor object as member of TriangleCommand
* [Feature] add getPipelineDescriptor method
* add renderbackend
* complete pipeline descriptor
* [Feature] add viewport in RenderCommand
* set viewport when rendrering
* [Feature] occur error when using RendererBackend, to be fixed.
* a workaround to fix black screen on macOS 10.14 (#19090)
* add rendererbackend init function
* fix typo
* [Feature] modify testFile
* [BugFix] modify shader path
* [Feature] set default viewport
* fix projection
* [Feature] modify log info
* [BugFix] change viewport data type to int
* [BugFix] add BindGroup to PipelienDescriptor
* [BugFix] change a_position to vec3 in sprite.vert
* [BugFix] set vertexLayout according to V3F_C4B_T2F structure
* [Feature] revert a_position to vec4
* [Feature] renderer should not use gl codes directly
* [Feature] it's better not use default value parameter
* fix depth test setting
* rendererbackend -> renderer
* clear color and depth at begin
* add metal backend
* metal support normalized attribute
* simplify codes
* update external
* add render pass desctriptor in pipeline descriptor
* fix warnings
* fix crash and memeory leak
* refactor Texture2D
* put pipeline descriptor into render command
* simplify codes
* [Feature] update Sprite
* fix crash when closing app
* [Feature] update SpriteBatchNode and TextureAtlas
* support render texture(not finish)
* [Feature] remove unused code
* make tests work on mac
* fix download-deps path error
* make tests work on iOS
* [Feature] support ttf under normal label effect
* refactor triangle command processing
* let renderer handle more common commands
* refactor backend
* make render texture work
* [Feature] refactor backend for GL
* [Feature]Renaming to make it easy to understand
* [Feature] change warp mode to CLAMP_TO_EDGE
* fix ghost
* simplify visit render queue logic
* support progress timer without rial mode
* support partcile system
* Feature/update label (#149)
* [BugFix] fix compile error
* [Feature] support outline effect in ios
* [Feature] add shader file
* [BugFix] fix begin and end RenderPass
* [Feature] update CustomCommand
* [Feature] revert project.pbxproj
* [Feature] simplify codes
* [BugFix] pack AI88 to RGBA8888 only when outline enable
* [Feature] support shadow effect in Label
* [Feature] support BMFont
* [Feature] support glow effect
* [Feature] simplify shader files
* LabelAtlas work
* handle blend function correctly
* support tile map
* don't share buffer in metal
* alloc buffer size as needed
* support more tilemap
* Merge branch 'minggo/metal-support' into feature/updateLabel
* minggo/metal-support:
support tile map
handle blend function correctly
LabelAtlas work
Feature/update label (#149)
support partcile system
# Conflicts:
# cocos/2d/CCLabel.cpp
# cocos/2d/CCSprite.cpp
# cocos/2d/CCSpriteBatchNode.cpp
# cocos/renderer/CCQuadCommand.cpp
# cocos/renderer/CCQuadCommand.h
* render texture work without saving file
* use global viewport
* grid3d works
* remove grabber
* tiled3d works
* [BugFix] fix label bug
* [Feature] add updateSubData for buffer
* [Feature] remove setVertexCount
* support depth test
* add callback command
* [Feature] add UITest
* [Feature] update UITest
* [Feature] remove unneeded codes
* fix custom command issue
* fix layer color blend issue
* [BugFix] fix iOS compile error
* [Feature] remove unneeded codes
* [Feature] fix updateVertexBuffer
* layerradial works
* add draw test back
* fix batch issue
* fix compiling error
* [BugFix] support ETC1
* [BugFix] get the correct pipelineDescriptor
* [BugFix] skip draw when backendTexture nullptr
* clipping node support
* [Feature] add shader files
* fix stencil issue in metal
* [Feature] update UILayoutTest
* [BugFix] skip drawing when vertexCount is zero
* refactor renderer
* add set global z order for stencil manager commands
* fix warnings caused by type
* remove viewport in render command
* [Feature] fix warnings caused by type
* [BugFix] clear vertexCount and indexCount for CustomComand when needed
* [Feature] update clear for CustomCommand
* ios use metal
* fix viewport issue
* fix LayerColorGradient crash
* [cmake] transport to android and windows (#160)
* save point 1
* compile on windows
* run on android
* revert useless change
* android set CC_ENABLE_CACHE_TEXTURE_DATA to 1
* add initGlew
* fix android crash
* add TODO new-renderer
* review update
* revert onGLFWWindowPosCallback
* fix android compiling error
* Impl progress radial (#162)
* progresstimer add radial impl
* default drawType to element
* dec invoke times of createVertexBuffer (#163)
* support depth/stencil format for gl backend
* simplify progress timer codes
* support motionstreak, effect is wrong
* fix motionstreak issue
* [Feature] update Scissor Test (#161)
* [Feature] update Scissor Test
* [Feature] update ScissorTest
* [Feature] rename function
* [Feature] get constant reference if needed
* [Feature] show render status (#164)
* improve performance
* fix depth state
* fill error that triangle vertex/index number bigger than buffer
* fix compiline error in release mode
* fix buffer conflict between CPU and GPU on iOS/macOS
* Renderer refactor (#165)
* use one vertes/index buffer with opengl
* fix error on windows
* custom command support index format config
* CCLayer: compact vertex data structure
* update comment
* fix doc
* support fast tilemap
* pass index format instead
* fix some wrong effect
* fix render texture error
* fix texture per-element size
* fix texture format error
* BlendFunc type refactor, GLenum -> backend::BlendFactor (#167)
* BlendFunc use backend::BlendFactor as inner field
* update comments
* use int to replace GLenum
* update xcode project fiel
* rename to GLBlendConst
* add ccConstants.h
* update xcode project file
* update copyright
* remove primitive command
* remove CCPrimitive.cpp/.h
* remove deprecated files
* remove unneeded files
* remove multiple view support
* remove multiple view support
* remove the usage of frame buffer in camera
* director don't use frame buffer
* remove FrameBuffer
* remove BatchCommand
* add some api reference
* add physics2d back
* fix crash when close app on mac
* improve render texture
* fix rendertexture issue
* fix rendertexture issue
* simplify codes
* CMake support for mac & ios (#169)
* update cmake
* fix compile error
* update 3rd libs version
* remove CCThread.h/.cpp
* remove ccthread
* use audio engine to implement simple audio engine
* remove unneeded codes
* remove deprecated codes
* remove winrt macro
* remove CC_USE_WIC
* set partcile blend function in more elegant way
* remove unneeded codes
* remove unneeded codes
* cmake works on windows
* update project setting
* improve performance
* GLFloat -> float
* sync v3 cmake improvements into metal-support (#172)
* pick: modern cmake, compile definitions improvement (#19139)
* modern cmake, use target_compile_definitions partly
* simplify macro define, remove USE_*
* modern cmake, macro define
* add physics 2d macro define into ccConfig.h
* remove USE_CHIPMUNK macro in build.gradle
* remove CocosSelectModule.cmake
* shrink useless define
* simplify compile options config, re-add if necessary
* update external for tmp CI test
* un-quote target_compile_options value
* add "-g" parameter only when debug mode
* keep single build type when generator Xcode & VS projecy
* update external for tmp CI tes
* add static_cast<char>(-1), fix -Wc++11-narrowing
* simplify win32 compile define
* not modify code, only improve compile options
# Conflicts:
# .gitignore
# cmake/Modules/CocosConfigDepend.cmake
# cocos/CMakeLists.txt
# external/config.json
# tests/cpp-tests/CMakeLists.txt
* modern cmake, improve cmake_compiler_flags (#19145)
* cmake_compiler_flags
* Fix typo
* Fix typo2
* Remove chanages from Android.mk
* correct lua template cmake build (#19149)
* don't add -Wno-deprecated into jsb target
* correct lua template cmake build
* fix win32 lua template compile error
* prevent cmake in-source-build friendly (#19151)
* pick: Copy resources to "Resources/" on win32 like in linux configuration
* add "/Z7" for cpp-tests on windows
* [cmake] fix iOS xcode property setting failed (#19208)
* fix iOS xcode property setting failed
* use search_depend_libs_recursive at dlls collect
* fix typo
* [cmake] add find_host_library into iOS toolchain file (#19230)
* pick: [lua android] use luajit & template cmake update (#19239)
* increase cmake stability , remove tests/CMakeLists.txt (#19261)
* cmake win32 Precompiled header (#19273)
* Precompiled header
* Fix
* Precompiled header for cocos
* Precompiled header jscocos2d
* Fix for COCOS2D_DEBUG is always 1 on Android (#19291)
Related #19289
* little build fix, tests cpp-tests works on mac
* sync v3 build related codes into metal-support (#173)
* strict initialization for std::array
* remove proj.win32 project configs
* modern cmake, cmake_cleanup_remove_unused_variables (#19146)
* Switch travis CI to xenial (#19207)
* Switch travis CI to xenial
* Remove language: android
* Set language: cpp
* Fix java problem
* Update sdkmanager
* Fix sdkmanger
* next sdkmanager fix
* Remove xenial from android
* revert to sdk-tools-{system}-3859397
* Remove linux cmake install
* Update before-install.sh
* Update .travis.yml
* Simplify install-deps-linux.sh, tested on Ubuntu 16.04 (#19212)
* Simplify install-deps-linux.sh
* Cleanup
* pick: install ninja
* update cocos2d-console submodule
* for metal-support alpha release, we only test cpp
* add HelloCpp into project(Cocos2d-x) for tmp test
* update extenal metal-support-4
* update uniform setting
* [Feature] update BindGroup
* [Feature] empty-test
* [Feature] cpp-test
* [Feature] fix GL compiler error
* [Feature] fix GL crash
* [Feature] empty-test
* [Feature] cpp-tests
* [feature] improve frameRate
* [feature] fix opengl compile error
* [feature] fix opengl compile error
* [BugFix] fix compute maxLocation error
* [Feature] update setting unifrom
* [Feature] fix namespace
* [Feature] remove unneeded code
* [Bugfix] fix project file
* [Feature] update review
* [texture2d] impl texture format support (#175)
* texture update
* update
* update texture
* commit
* compile on windows
* ddd
* rename
* rename methods
* no crash
* save gl
* save
* save
* rename
* move out pixel format convert functions
* metal crash
* update
* update android
* support gles compressed texture format
* support more compress format
* add more conversion methods
* ss
* save
* update conversion methods
* add PVRTC format support
* reformat
* add marco linux
* fix GL marcro
* pvrtc supported only by ios 8.0+
* remove unused cmake
* revert change
* refactor Texture2D::initWithData
* fix conversion log
* refactor Texture2D::initWithData
* remove some OpenGL constants for PVRTC
* add todo
* fix typo
* AutoTest works on mac/iOS by disable part cases, sync v3 bug fix (#174)
* review cpp-tests, and fix part issues on start auto test
* sync png format fix: Node:Particle3D abnormal texture effects #19204
* fix cpp-tests SpritePolygon crash, wrong png format (#19170)
* fix wrong png convert format from sRGB to Gray
* erase plist index if all frames was erased
* test_A8.png have I8 format, fix it
* [CCSpriteCache] allow re-add plist & add testcase (#19175)
* allow re-add plist & add testcase
* remove comments/rename method/update testcase
* fix isSpriteFramesWithFileLoaded & add testcase
* remove used variable
* remove unused variable
* fix double free issues when js/lua-tests exit on iOS (#19236)
* disable part cases, AutoTest works without crash on mac
* update cocos2dx files json, to test cocos new next
* fix spritecache plist parsing issue (#19269)
* [linux] Fix FileUtils::getContents with folder (#19157)
* fix FileUtils::getContents on linux/mac
* use stat.st_mode
* simplify
* [CCFileUtils] win32 getFileSize (#19176)
* win32 getFileSize
* fix stat
* [cpp test-Android]20:FileUtils/2 change title (#19197)
* sync #19200
* sync #19231
* [android lua] improve performance of lua loader (#19234)
* [lua] improve performance of lua loader
* remove cache fix
* Revert "fix spritecache plist parsing issue (#19269)"
This reverts commit f3a85ece4307a7b90816c34489d1ed2c8fd11baf.
* remove win32 project files ref in template.json
* add metal framework lnk ref into cpp template
* test on iOS, and disable part cases
* alBufferData instead of alBufferDataStatic for small audio file on Apple (#19227)
* changes AudioCache to use alBufferData instead of alBufferDataStatic
(also makes test 19 faster to trigger openal bugs faster)
The original problem: CrashIfClientProvidedBogusAudioBufferList
https://github.com/cocos2d/cocos2d-x/issues/18948
is not happening anymore, but there's still a not very frequent issue
that makes OpenAL crash with a call stack like this.
AudioCache::readDataTask > alBufferData > CleanUpDeadBufferList
It happes more frequently when the device is "cold", which means after
half an hour of not using the device (locked).
I could not find the actual source code for iOS OpenAL, so I used the
macOS versions:
https://opensource.apple.com/source/OpenAL/OpenAL-48.7/Source/OpenAL/oalImp.cpp.auto.html
They seem to use CAGuard.h to make sure the dead buffer list
has no threading issues. I'm worried because the CAGuard code I found
has macos and win32 define but no iOS, so I'm not sure. I guess the
iOS version is different and has the guard.
I could not find a place in the code that's unprotected by the locks
except the InitializeBufferMap() which should not be called more than
once from cocos, and there's a workaround in AudioEngine-impl for it.
I reduced the occurence of the CleanUpDeadBufferList crash by moving
the guard in ~AudioCache to cover the alDeleteBuffers call.
* remove hack method "setTimeout" on audio
* AutoTest works on iOS
* support set ios deployment target for root project
* enable all texture2d cases, since Jiang have fixed
* add CCTextureUtils to xcode project file (#176)
* add leak cases for SpriteFrameCache (#177)
* re-add SpriteFrameCache cases
* update template file json
* Update SpriteFrameCacheTest.cpp
* fix compiling error
2019-01-18 15:08:25 +08:00
|
|
|
cntLabel->setString(cntBuffer);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
void TestListFiles::onExit()
|
|
|
|
{
|
|
|
|
FileUtilsDemo::onExit();
|
|
|
|
}
|
|
|
|
|
|
|
|
std::string TestListFiles::title() const
|
|
|
|
{
|
|
|
|
return "FileUtils: list files of directory";
|
|
|
|
}
|
|
|
|
|
|
|
|
std::string TestListFiles::subtitle() const
|
|
|
|
{
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void TestIsFileExistRejectFolder::onEnter()
|
|
|
|
{
|
|
|
|
FileUtilsDemo::onEnter();
|
|
|
|
|
|
|
|
auto winSize = Director::getInstance()->getWinSize();
|
|
|
|
|
|
|
|
auto infoLabel = Label::createWithTTF("tests folder 'NavMesh/maps', expect to be false", "fonts/Thonburi.ttf", 18);
|
|
|
|
this->addChild(infoLabel);
|
|
|
|
infoLabel->setPosition(winSize.width / 2, winSize.height * 3 / 4);
|
|
|
|
|
|
|
|
auto cntLabel = Label::createWithTTF("waiting...", "fonts/Thonburi.ttf", 18);
|
|
|
|
this->addChild(cntLabel);
|
|
|
|
cntLabel->setPosition(winSize.width / 2, winSize.height / 3);
|
|
|
|
|
|
|
|
auto exists = FileUtils::getInstance()->isFileExist("NavMesh/maps");
|
|
|
|
auto isDirectory = FileUtils::getInstance()->isDirectoryExist("NavMesh/maps");
|
|
|
|
|
|
|
|
char cntBuffer[200] = { 0 };
|
2019-05-09 10:21:25 +08:00
|
|
|
snprintf(cntBuffer, 200, "isDir: %s, isFile: %s", isDirectory ? "true": "false" , exists ? "true" : "false");
|
metal support for cocos2d-x (#19305)
* remove deprecated files
* remove some deprecated codes
* remove more deprecated codes
* remove ui deprecated codes
* remove more deprecated codes
* remove deprecated codes in ccmenuitem
* remove more deprecated codes in ui
* remove more deprecated codes in ui
* remove more deprecated codes in ui
* remove more deprecated codes
* remove more deprecated codes
* remove more deprecated codes
* remove vr related codes and ignore some modules
* remove allocator
* remove some config
* 【Feature】add back-end project file
* [Feature] add back-end file
* add pipeline descriptor and shader cache
* [Feature] support sprite for backend
* [Feature] remove unneeded code
* [Feature] according to es2.0 spec, you must use clamp-to-edge as texture wrap mode, and no mipmapping for non-power-of-two texture
* [Feature] set texture wrap mode to clamp-to-edge, and no mipmapping for non-power-of-two texture
* [Feature] remove macro define to .cpp file
* [Feature] add log info
* [Feature] add PipelineDescriptor for TriangleCommand
* [Feature] add PipelineDescriptor object as member of TriangleCommand
* [Feature] add getPipelineDescriptor method
* add renderbackend
* complete pipeline descriptor
* [Feature] add viewport in RenderCommand
* set viewport when rendrering
* [Feature] occur error when using RendererBackend, to be fixed.
* a workaround to fix black screen on macOS 10.14 (#19090)
* add rendererbackend init function
* fix typo
* [Feature] modify testFile
* [BugFix] modify shader path
* [Feature] set default viewport
* fix projection
* [Feature] modify log info
* [BugFix] change viewport data type to int
* [BugFix] add BindGroup to PipelienDescriptor
* [BugFix] change a_position to vec3 in sprite.vert
* [BugFix] set vertexLayout according to V3F_C4B_T2F structure
* [Feature] revert a_position to vec4
* [Feature] renderer should not use gl codes directly
* [Feature] it's better not use default value parameter
* fix depth test setting
* rendererbackend -> renderer
* clear color and depth at begin
* add metal backend
* metal support normalized attribute
* simplify codes
* update external
* add render pass desctriptor in pipeline descriptor
* fix warnings
* fix crash and memeory leak
* refactor Texture2D
* put pipeline descriptor into render command
* simplify codes
* [Feature] update Sprite
* fix crash when closing app
* [Feature] update SpriteBatchNode and TextureAtlas
* support render texture(not finish)
* [Feature] remove unused code
* make tests work on mac
* fix download-deps path error
* make tests work on iOS
* [Feature] support ttf under normal label effect
* refactor triangle command processing
* let renderer handle more common commands
* refactor backend
* make render texture work
* [Feature] refactor backend for GL
* [Feature]Renaming to make it easy to understand
* [Feature] change warp mode to CLAMP_TO_EDGE
* fix ghost
* simplify visit render queue logic
* support progress timer without rial mode
* support partcile system
* Feature/update label (#149)
* [BugFix] fix compile error
* [Feature] support outline effect in ios
* [Feature] add shader file
* [BugFix] fix begin and end RenderPass
* [Feature] update CustomCommand
* [Feature] revert project.pbxproj
* [Feature] simplify codes
* [BugFix] pack AI88 to RGBA8888 only when outline enable
* [Feature] support shadow effect in Label
* [Feature] support BMFont
* [Feature] support glow effect
* [Feature] simplify shader files
* LabelAtlas work
* handle blend function correctly
* support tile map
* don't share buffer in metal
* alloc buffer size as needed
* support more tilemap
* Merge branch 'minggo/metal-support' into feature/updateLabel
* minggo/metal-support:
support tile map
handle blend function correctly
LabelAtlas work
Feature/update label (#149)
support partcile system
# Conflicts:
# cocos/2d/CCLabel.cpp
# cocos/2d/CCSprite.cpp
# cocos/2d/CCSpriteBatchNode.cpp
# cocos/renderer/CCQuadCommand.cpp
# cocos/renderer/CCQuadCommand.h
* render texture work without saving file
* use global viewport
* grid3d works
* remove grabber
* tiled3d works
* [BugFix] fix label bug
* [Feature] add updateSubData for buffer
* [Feature] remove setVertexCount
* support depth test
* add callback command
* [Feature] add UITest
* [Feature] update UITest
* [Feature] remove unneeded codes
* fix custom command issue
* fix layer color blend issue
* [BugFix] fix iOS compile error
* [Feature] remove unneeded codes
* [Feature] fix updateVertexBuffer
* layerradial works
* add draw test back
* fix batch issue
* fix compiling error
* [BugFix] support ETC1
* [BugFix] get the correct pipelineDescriptor
* [BugFix] skip draw when backendTexture nullptr
* clipping node support
* [Feature] add shader files
* fix stencil issue in metal
* [Feature] update UILayoutTest
* [BugFix] skip drawing when vertexCount is zero
* refactor renderer
* add set global z order for stencil manager commands
* fix warnings caused by type
* remove viewport in render command
* [Feature] fix warnings caused by type
* [BugFix] clear vertexCount and indexCount for CustomComand when needed
* [Feature] update clear for CustomCommand
* ios use metal
* fix viewport issue
* fix LayerColorGradient crash
* [cmake] transport to android and windows (#160)
* save point 1
* compile on windows
* run on android
* revert useless change
* android set CC_ENABLE_CACHE_TEXTURE_DATA to 1
* add initGlew
* fix android crash
* add TODO new-renderer
* review update
* revert onGLFWWindowPosCallback
* fix android compiling error
* Impl progress radial (#162)
* progresstimer add radial impl
* default drawType to element
* dec invoke times of createVertexBuffer (#163)
* support depth/stencil format for gl backend
* simplify progress timer codes
* support motionstreak, effect is wrong
* fix motionstreak issue
* [Feature] update Scissor Test (#161)
* [Feature] update Scissor Test
* [Feature] update ScissorTest
* [Feature] rename function
* [Feature] get constant reference if needed
* [Feature] show render status (#164)
* improve performance
* fix depth state
* fill error that triangle vertex/index number bigger than buffer
* fix compiline error in release mode
* fix buffer conflict between CPU and GPU on iOS/macOS
* Renderer refactor (#165)
* use one vertes/index buffer with opengl
* fix error on windows
* custom command support index format config
* CCLayer: compact vertex data structure
* update comment
* fix doc
* support fast tilemap
* pass index format instead
* fix some wrong effect
* fix render texture error
* fix texture per-element size
* fix texture format error
* BlendFunc type refactor, GLenum -> backend::BlendFactor (#167)
* BlendFunc use backend::BlendFactor as inner field
* update comments
* use int to replace GLenum
* update xcode project fiel
* rename to GLBlendConst
* add ccConstants.h
* update xcode project file
* update copyright
* remove primitive command
* remove CCPrimitive.cpp/.h
* remove deprecated files
* remove unneeded files
* remove multiple view support
* remove multiple view support
* remove the usage of frame buffer in camera
* director don't use frame buffer
* remove FrameBuffer
* remove BatchCommand
* add some api reference
* add physics2d back
* fix crash when close app on mac
* improve render texture
* fix rendertexture issue
* fix rendertexture issue
* simplify codes
* CMake support for mac & ios (#169)
* update cmake
* fix compile error
* update 3rd libs version
* remove CCThread.h/.cpp
* remove ccthread
* use audio engine to implement simple audio engine
* remove unneeded codes
* remove deprecated codes
* remove winrt macro
* remove CC_USE_WIC
* set partcile blend function in more elegant way
* remove unneeded codes
* remove unneeded codes
* cmake works on windows
* update project setting
* improve performance
* GLFloat -> float
* sync v3 cmake improvements into metal-support (#172)
* pick: modern cmake, compile definitions improvement (#19139)
* modern cmake, use target_compile_definitions partly
* simplify macro define, remove USE_*
* modern cmake, macro define
* add physics 2d macro define into ccConfig.h
* remove USE_CHIPMUNK macro in build.gradle
* remove CocosSelectModule.cmake
* shrink useless define
* simplify compile options config, re-add if necessary
* update external for tmp CI test
* un-quote target_compile_options value
* add "-g" parameter only when debug mode
* keep single build type when generator Xcode & VS projecy
* update external for tmp CI tes
* add static_cast<char>(-1), fix -Wc++11-narrowing
* simplify win32 compile define
* not modify code, only improve compile options
# Conflicts:
# .gitignore
# cmake/Modules/CocosConfigDepend.cmake
# cocos/CMakeLists.txt
# external/config.json
# tests/cpp-tests/CMakeLists.txt
* modern cmake, improve cmake_compiler_flags (#19145)
* cmake_compiler_flags
* Fix typo
* Fix typo2
* Remove chanages from Android.mk
* correct lua template cmake build (#19149)
* don't add -Wno-deprecated into jsb target
* correct lua template cmake build
* fix win32 lua template compile error
* prevent cmake in-source-build friendly (#19151)
* pick: Copy resources to "Resources/" on win32 like in linux configuration
* add "/Z7" for cpp-tests on windows
* [cmake] fix iOS xcode property setting failed (#19208)
* fix iOS xcode property setting failed
* use search_depend_libs_recursive at dlls collect
* fix typo
* [cmake] add find_host_library into iOS toolchain file (#19230)
* pick: [lua android] use luajit & template cmake update (#19239)
* increase cmake stability , remove tests/CMakeLists.txt (#19261)
* cmake win32 Precompiled header (#19273)
* Precompiled header
* Fix
* Precompiled header for cocos
* Precompiled header jscocos2d
* Fix for COCOS2D_DEBUG is always 1 on Android (#19291)
Related #19289
* little build fix, tests cpp-tests works on mac
* sync v3 build related codes into metal-support (#173)
* strict initialization for std::array
* remove proj.win32 project configs
* modern cmake, cmake_cleanup_remove_unused_variables (#19146)
* Switch travis CI to xenial (#19207)
* Switch travis CI to xenial
* Remove language: android
* Set language: cpp
* Fix java problem
* Update sdkmanager
* Fix sdkmanger
* next sdkmanager fix
* Remove xenial from android
* revert to sdk-tools-{system}-3859397
* Remove linux cmake install
* Update before-install.sh
* Update .travis.yml
* Simplify install-deps-linux.sh, tested on Ubuntu 16.04 (#19212)
* Simplify install-deps-linux.sh
* Cleanup
* pick: install ninja
* update cocos2d-console submodule
* for metal-support alpha release, we only test cpp
* add HelloCpp into project(Cocos2d-x) for tmp test
* update extenal metal-support-4
* update uniform setting
* [Feature] update BindGroup
* [Feature] empty-test
* [Feature] cpp-test
* [Feature] fix GL compiler error
* [Feature] fix GL crash
* [Feature] empty-test
* [Feature] cpp-tests
* [feature] improve frameRate
* [feature] fix opengl compile error
* [feature] fix opengl compile error
* [BugFix] fix compute maxLocation error
* [Feature] update setting unifrom
* [Feature] fix namespace
* [Feature] remove unneeded code
* [Bugfix] fix project file
* [Feature] update review
* [texture2d] impl texture format support (#175)
* texture update
* update
* update texture
* commit
* compile on windows
* ddd
* rename
* rename methods
* no crash
* save gl
* save
* save
* rename
* move out pixel format convert functions
* metal crash
* update
* update android
* support gles compressed texture format
* support more compress format
* add more conversion methods
* ss
* save
* update conversion methods
* add PVRTC format support
* reformat
* add marco linux
* fix GL marcro
* pvrtc supported only by ios 8.0+
* remove unused cmake
* revert change
* refactor Texture2D::initWithData
* fix conversion log
* refactor Texture2D::initWithData
* remove some OpenGL constants for PVRTC
* add todo
* fix typo
* AutoTest works on mac/iOS by disable part cases, sync v3 bug fix (#174)
* review cpp-tests, and fix part issues on start auto test
* sync png format fix: Node:Particle3D abnormal texture effects #19204
* fix cpp-tests SpritePolygon crash, wrong png format (#19170)
* fix wrong png convert format from sRGB to Gray
* erase plist index if all frames was erased
* test_A8.png have I8 format, fix it
* [CCSpriteCache] allow re-add plist & add testcase (#19175)
* allow re-add plist & add testcase
* remove comments/rename method/update testcase
* fix isSpriteFramesWithFileLoaded & add testcase
* remove used variable
* remove unused variable
* fix double free issues when js/lua-tests exit on iOS (#19236)
* disable part cases, AutoTest works without crash on mac
* update cocos2dx files json, to test cocos new next
* fix spritecache plist parsing issue (#19269)
* [linux] Fix FileUtils::getContents with folder (#19157)
* fix FileUtils::getContents on linux/mac
* use stat.st_mode
* simplify
* [CCFileUtils] win32 getFileSize (#19176)
* win32 getFileSize
* fix stat
* [cpp test-Android]20:FileUtils/2 change title (#19197)
* sync #19200
* sync #19231
* [android lua] improve performance of lua loader (#19234)
* [lua] improve performance of lua loader
* remove cache fix
* Revert "fix spritecache plist parsing issue (#19269)"
This reverts commit f3a85ece4307a7b90816c34489d1ed2c8fd11baf.
* remove win32 project files ref in template.json
* add metal framework lnk ref into cpp template
* test on iOS, and disable part cases
* alBufferData instead of alBufferDataStatic for small audio file on Apple (#19227)
* changes AudioCache to use alBufferData instead of alBufferDataStatic
(also makes test 19 faster to trigger openal bugs faster)
The original problem: CrashIfClientProvidedBogusAudioBufferList
https://github.com/cocos2d/cocos2d-x/issues/18948
is not happening anymore, but there's still a not very frequent issue
that makes OpenAL crash with a call stack like this.
AudioCache::readDataTask > alBufferData > CleanUpDeadBufferList
It happes more frequently when the device is "cold", which means after
half an hour of not using the device (locked).
I could not find the actual source code for iOS OpenAL, so I used the
macOS versions:
https://opensource.apple.com/source/OpenAL/OpenAL-48.7/Source/OpenAL/oalImp.cpp.auto.html
They seem to use CAGuard.h to make sure the dead buffer list
has no threading issues. I'm worried because the CAGuard code I found
has macos and win32 define but no iOS, so I'm not sure. I guess the
iOS version is different and has the guard.
I could not find a place in the code that's unprotected by the locks
except the InitializeBufferMap() which should not be called more than
once from cocos, and there's a workaround in AudioEngine-impl for it.
I reduced the occurence of the CleanUpDeadBufferList crash by moving
the guard in ~AudioCache to cover the alDeleteBuffers call.
* remove hack method "setTimeout" on audio
* AutoTest works on iOS
* support set ios deployment target for root project
* enable all texture2d cases, since Jiang have fixed
* add CCTextureUtils to xcode project file (#176)
* add leak cases for SpriteFrameCache (#177)
* re-add SpriteFrameCache cases
* update template file json
* Update SpriteFrameCacheTest.cpp
* fix compiling error
2019-01-18 15:08:25 +08:00
|
|
|
cntLabel->setString(cntBuffer);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
void TestIsFileExistRejectFolder::onExit()
|
|
|
|
{
|
|
|
|
FileUtilsDemo::onExit();
|
|
|
|
}
|
|
|
|
|
|
|
|
std::string TestIsFileExistRejectFolder::title() const
|
|
|
|
{
|
|
|
|
return "FileUtils: isFileExist(direname)";
|
|
|
|
}
|
|
|
|
|
|
|
|
std::string TestIsFileExistRejectFolder::subtitle() const
|
|
|
|
{
|
|
|
|
return "";
|
|
|
|
}
|