Skip to content

Commit c616d6d

Browse files
j-jorgeminggo
authored and
minggo
committedFeb 4, 2017
Compilation fix (cocos2d#17209)
* Fix various compilation issues. Mostly errors on field initialization order but also missing files in CMakeLists and missing include directives. * Fix compilations issues with GCC 6.2 * Fix gitignore libs/ entry to not ignore the Android external libraries.
1 parent 6bbf015 commit c616d6d

31 files changed

+84
-71
lines changed
 

‎.gitignore

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ BundleArtifacts
4343
*.VC.db
4444

4545
# Ignore files build by ndk and eclipse
46-
libs/
46+
/libs/
4747
bin/
4848
obj/
4949
gen/

‎cocos/3d/CCMesh.cpp

+2-3
Original file line numberDiff line numberDiff line change
@@ -125,13 +125,12 @@ Mesh::Mesh()
125125
: _skin(nullptr)
126126
, _visible(true)
127127
, _isTransparent(false)
128+
, _force2DQueue(false)
128129
, _meshIndexData(nullptr)
129-
, _material(nullptr)
130130
, _glProgramState(nullptr)
131131
, _blend(BlendFunc::ALPHA_NON_PREMULTIPLIED)
132-
, _visibleChanged(nullptr)
133132
, _blendDirty(true)
134-
, _force2DQueue(false)
133+
, _material(nullptr)
135134
, _texFile("")
136135
{
137136

‎cocos/audio/CMakeLists.txt

+1
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ elseif(MACOSX)
4141
set(COCOS_AUDIO_PLATFORM_SRC
4242
${COCOS_AUDIO_PLATFORM_SRC_C}
4343
audio/apple/AudioCache.mm
44+
audio/apple/AudioDecoder.mm
4445
audio/apple/AudioEngine-inl.mm
4546
audio/apple/AudioPlayer.mm
4647
audio/mac/SimpleAudioEngine.mm

‎cocos/audio/android/AudioEngine-inl.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -107,14 +107,14 @@ static int fdGetter(const std::string& url, off_t* start, off_t* length)
107107

108108
//====================================================
109109
AudioEngineImpl::AudioEngineImpl()
110-
: _audioIDIndex(0)
111-
, _engineObject(nullptr)
110+
: _engineObject(nullptr)
112111
, _engineEngine(nullptr)
113112
, _outputMixObject(nullptr)
114-
, _lazyInitLoop(true)
115113
, _audioPlayerProvider(nullptr)
116114
, _onPauseListener(nullptr)
117115
, _onResumeListener(nullptr)
116+
, _audioIDIndex(0)
117+
, _lazyInitLoop(true)
118118
{
119119
__callerThreadUtils.setCallerThreadId(std::this_thread::get_id());
120120
}

‎cocos/audio/android/CCThreadPool.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ ThreadPool *ThreadPool::newSingleThreadPool()
102102
}
103103

104104
ThreadPool::ThreadPool(int minNum, int maxNum)
105-
: _isStop(false), _isDone(false), _idleThreadNum(0), _minThreadNum(minNum),
105+
: _isDone(false), _isStop(false), _idleThreadNum(0), _minThreadNum(minNum),
106106
_maxThreadNum(maxNum), _initedThreadNum(0), _shrinkInterval(DEFAULT_SHRINK_INTERVAL),
107107
_shrinkStep(DEFAULT_SHRINK_STEP), _stretchStep(DEFAULT_STRETCH_STEP),
108108
_isFixedSize(false)

‎cocos/audio/apple/AudioCache.mm

+3-3
Original file line numberDiff line numberDiff line change
@@ -70,10 +70,10 @@ static ALvoid alBufferDataStaticProc(const ALint bid, ALenum format, ALvoid* da
7070
using namespace cocos2d::experimental;
7171

7272
AudioCache::AudioCache()
73-
: _totalFrames(0)
74-
, _framesRead(0)
75-
, _format(-1)
73+
: _format(-1)
7674
, _duration(0.0f)
75+
, _totalFrames(0)
76+
, _framesRead(0)
7777
, _alBufferId(INVALID_AL_BUFFER_ID)
7878
, _pcmData(nullptr)
7979
, _queBufferFrames(0)

‎cocos/audio/apple/AudioDecoder.mm

+2
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ of this software and associated documentation files (the "Software"), to deal
2525
#include "audio/apple/AudioDecoder.h"
2626
#include "audio/apple/AudioMacros.h"
2727

28+
#import <Foundation/Foundation.h>
29+
2830
#define LOG_TAG "AudioDecoder"
2931

3032
namespace cocos2d { namespace experimental {

‎cocos/audio/apple/AudioPlayer.mm

+1-1
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ of this software and associated documentation files (the "Software"), to deal
128128
ALOGVV("Before alSourceStop");
129129
alSourceStop(_alSource); CHECK_AL_ERROR_DEBUG();
130130
ALOGVV("Before alSourcei");
131-
alSourcei(_alSource, AL_BUFFER, NULL); CHECK_AL_ERROR_DEBUG();
131+
alSourcei(_alSource, AL_BUFFER, 0); CHECK_AL_ERROR_DEBUG();
132132

133133
_removeByAudioEngine = true;
134134

‎cocos/base/CCConfiguration.cpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -334,7 +334,8 @@ const Value& Configuration::getValue(const std::string& key, const Value& defaul
334334
auto iter = _valueDict.find(key);
335335
if (iter != _valueDict.cend())
336336
return _valueDict.at(key);
337-
return defaultValue;
337+
338+
return defaultValue;
338339
}
339340

340341
void Configuration::setValue(const std::string& key, const Value& value)

‎cocos/base/CCProperties.cpp

+7-6
Original file line numberDiff line numberDiff line change
@@ -43,15 +43,16 @@ void calculateNamespacePath(const std::string& urlString, std::string& fileStrin
4343
Properties* getPropertiesFromNamespacePath(Properties* properties, const std::vector<std::string>& namespacePath);
4444

4545
Properties::Properties()
46-
: _variables(nullptr), _dirPath(nullptr), _parent(nullptr), _dataIdx(nullptr), _data(nullptr)
46+
: _dataIdx(nullptr), _data(nullptr), _variables(nullptr), _dirPath(nullptr), _parent(nullptr)
4747
{
4848
_properties.reserve(32);
4949
}
5050

5151
Properties::Properties(const Properties& copy)
52-
: _namespace(copy._namespace), _id(copy._id), _parentID(copy._parentID), _properties(copy._properties),
53-
_variables(nullptr), _dirPath(nullptr), _parent(copy._parent),
54-
_dataIdx(copy._dataIdx), _data(copy._data)
52+
: _dataIdx(copy._dataIdx), _data(copy._data), _namespace(copy._namespace),
53+
_id(copy._id), _parentID(copy._parentID), _properties(copy._properties),
54+
_variables(nullptr), _dirPath(nullptr), _parent(copy._parent)
55+
5556
{
5657
setDirectoryPath(copy._dirPath);
5758

@@ -63,14 +64,14 @@ Properties::Properties(const Properties& copy)
6364
}
6465

6566
Properties::Properties(Data* data, ssize_t* dataIdx)
66-
: _variables(NULL), _dirPath(NULL), _parent(NULL), _dataIdx(dataIdx), _data(data)
67+
: _dataIdx(dataIdx), _data(data), _variables(NULL), _dirPath(NULL), _parent(NULL)
6768
{
6869
readProperties();
6970
rewind();
7071
}
7172

7273
Properties::Properties(Data* data, ssize_t* dataIdx, const std::string& name, const char* id, const char* parentID, Properties* parent)
73-
: _namespace(name), _variables(NULL), _dirPath(NULL), _parent(parent), _dataIdx(dataIdx), _data(data)
74+
: _dataIdx(dataIdx), _data(data), _namespace(name), _variables(NULL), _dirPath(NULL), _parent(parent)
7475
{
7576
if (id)
7677
{

‎cocos/deprecated/CCArray.cpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -350,7 +350,8 @@ __Array* __Array::clone() const
350350
Ref* obj = nullptr;
351351
Ref* tmpObj = nullptr;
352352
Clonable* clonable = nullptr;
353-
CCARRAY_FOREACH(this, obj)
353+
const __Array* self( this );
354+
CCARRAY_FOREACH(self, obj)
354355
{
355356
clonable = dynamic_cast<Clonable*>(obj);
356357
if (clonable)

‎cocos/navmesh/CCNavMeshAgent.cpp

+7-7
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,9 @@ NavMeshAgentParam::NavMeshAgentParam()
4040
, maxSpeed(3.5f)
4141
, collisionQueryRange(radius * 12.0f)
4242
, pathOptimizationRange(radius * 30.0f)
43+
, separationWeight(2.0f)
4344
, updateFlags(DT_CROWD_ANTICIPATE_TURNS | DT_CROWD_OPTIMIZE_VIS | DT_CROWD_OPTIMIZE_TOPO | DT_CROWD_OBSTACLE_AVOIDANCE)
4445
, obstacleAvoidanceType(3)
45-
, separationWeight(2.0f)
4646
, queryFilterType(0)
4747
{
4848

@@ -67,17 +67,17 @@ const std::string& NavMeshAgent::getNavMeshAgentComponentName()
6767
}
6868

6969
cocos2d::NavMeshAgent::NavMeshAgent()
70-
: _agentID(-1)
70+
: _syncFlag(NODE_AND_NODE)
71+
, _rotRefAxes(Vec3::UNIT_Z)
72+
, _state(DT_CROWDAGENT_STATE_WALKING)
7173
, _needAutoOrientation(true)
72-
, _crowd(nullptr)
74+
, _agentID(-1)
7375
, _needUpdateAgent(true)
7476
, _needMove(false)
75-
, _navMeshQuery(nullptr)
76-
, _rotRefAxes(Vec3::UNIT_Z)
7777
, _totalTimeAfterMove(0.0f)
7878
, _userData(nullptr)
79-
, _state(DT_CROWDAGENT_STATE_WALKING)
80-
, _syncFlag(NODE_AND_NODE)
79+
, _crowd(nullptr)
80+
, _navMeshQuery(nullptr)
8181
{
8282

8383
}

‎cocos/navmesh/CCNavMeshDebugDraw.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,10 @@
3434
NS_CC_BEGIN
3535

3636
NavMeshDebugDraw::NavMeshDebugDraw()
37-
: _primitiveType(GL_POINTS)
38-
, _dirtyBuffer(true)
39-
, _currentPrimitive(nullptr)
37+
: _currentPrimitive(nullptr)
38+
, _primitiveType(GL_POINTS)
4039
, _currentDepthMask(true)
40+
, _dirtyBuffer(true)
4141
{
4242
_stateBlock = RenderState::StateBlock::create();
4343
_stateBlock->setCullFace(true);

‎cocos/navmesh/CCNavMeshObstacle.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,9 @@ const std::string& NavMeshObstacle::getNavMeshObstacleComponentName()
5353
NavMeshObstacle::NavMeshObstacle()
5454
: _radius(0.0f)
5555
, _height(0.0f)
56-
, _tileCache(nullptr)
57-
, _obstacleID(-1)
5856
, _syncFlag(NODE_AND_NODE)
57+
, _obstacleID(-1)
58+
, _tileCache(nullptr)
5959
{
6060

6161
}

‎cocos/network/CCDownloader-apple.mm

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ of this software and associated documentation files (the "Software"), to deal
3030

3131
////////////////////////////////////////////////////////////////////////////////
3232
// OC Classes Declaration
33-
#import <Foundation/NSData.h>
33+
#import <Foundation/Foundation.h>
3434

3535
// this wrapper used to wrap C++ class DownloadTask into NSMutableDictionary
3636
@interface DownloadTaskWrapper : NSObject

‎cocos/network/CMakeLists.txt

+4
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,10 @@ if(ANDROID)
1313
set(COCOS_NETWORK_PLATFORM_SRC
1414
network/CCDownloader-android.cpp
1515
)
16+
elseif(MACOSX)
17+
set(COCOS_NETWORK_PLATFORM_SRC
18+
network/CCDownloader-apple.mm
19+
)
1620
endif()
1721

1822
set(COCOS_NETWORK_SRC

‎cocos/network/HttpClient-android.cpp

+5-5
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,8 @@ class HttpURLConnection
8585
{
8686
public:
8787
HttpURLConnection(HttpClient* httpClient)
88-
:_httpURLConnection(nullptr)
89-
,_client(httpClient)
88+
:_client(httpClient)
89+
,_httpURLConnection(nullptr)
9090
,_requestmethod("")
9191
,_responseCookies("")
9292
,_cookieFileName("")
@@ -874,12 +874,12 @@ void HttpClient::setSSLVerification(const std::string& caFile)
874874
}
875875

876876
HttpClient::HttpClient()
877-
: _timeoutForConnect(30)
877+
: _isInited(false)
878+
, _timeoutForConnect(30)
878879
, _timeoutForRead(60)
879-
, _isInited(false)
880880
, _threadCount(0)
881-
, _requestSentinel(new HttpRequest())
882881
, _cookie(nullptr)
882+
, _requestSentinel(new HttpRequest())
883883
{
884884
CCLOG("In the constructor of HttpClient!");
885885
increaseThreadCount();

‎cocos/network/HttpClient-apple.mm

+3-3
Original file line numberDiff line numberDiff line change
@@ -364,12 +364,12 @@ static int processTask(HttpClient* client, HttpRequest* request, NSString* reque
364364
}
365365

366366
HttpClient::HttpClient()
367-
: _timeoutForConnect(30)
367+
: _isInited(false)
368+
, _timeoutForConnect(30)
368369
, _timeoutForRead(60)
369-
, _isInited(false)
370370
, _threadCount(0)
371-
, _requestSentinel(new HttpRequest())
372371
, _cookie(nullptr)
372+
, _requestSentinel(new HttpRequest())
373373
{
374374
CCLOG("In the constructor of HttpClient!");
375375
memset(_responseMessage, 0, sizeof(char) * RESPONSE_BUFFER_SIZE);

‎cocos/network/HttpClient.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -396,12 +396,12 @@ void HttpClient::setSSLVerification(const std::string& caFile)
396396
}
397397

398398
HttpClient::HttpClient()
399-
: _timeoutForConnect(30)
399+
: _isInited(false)
400+
, _timeoutForConnect(30)
400401
, _timeoutForRead(60)
401-
, _isInited(false)
402402
, _threadCount(0)
403-
, _requestSentinel(new HttpRequest())
404403
, _cookie(nullptr)
404+
, _requestSentinel(new HttpRequest())
405405
{
406406
CCLOG("In the constructor of HttpClient!");
407407
memset(_responseMessage, 0, RESPONSE_BUFFER_SIZE * sizeof(char));

‎cocos/platform/android/CCDevice-android.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -70,9 +70,9 @@ class BitmapDC
7070
public:
7171

7272
BitmapDC()
73-
: _data(nullptr)
74-
, _width(0)
73+
: _width(0)
7574
, _height(0)
75+
, _data(nullptr)
7676
{
7777
}
7878

‎cocos/renderer/CCFrameBuffer.cpp

+6-6
Original file line numberDiff line numberDiff line change
@@ -140,8 +140,8 @@ RenderTarget::~RenderTarget()
140140
}
141141

142142
RenderTargetRenderBuffer::RenderTargetRenderBuffer()
143-
: _colorBuffer(0)
144-
, _format(GL_RGBA4)
143+
: _format(GL_RGBA4)
144+
, _colorBuffer(0)
145145
#if CC_ENABLE_CACHE_TEXTURE_DATA
146146
, _reBuildRenderBufferListener(nullptr)
147147
#endif
@@ -382,14 +382,14 @@ bool FrameBuffer::init(uint8_t fid, unsigned int width, unsigned int height)
382382
}
383383

384384
FrameBuffer::FrameBuffer()
385-
: _clearColor(Color4F(0, 0, 0, 1))
385+
: _fbo(0)
386+
, _previousFBO(0)
387+
, _fboBindingDirty(true)
388+
, _clearColor(Color4F(0, 0, 0, 1))
386389
, _clearDepth(1.0)
387390
, _clearStencil(0)
388-
, _fbo(0)
389-
, _previousFBO(0)
390391
, _rt(nullptr)
391392
, _rtDepthStencil(nullptr)
392-
, _fboBindingDirty(true)
393393
, _isDefault(false)
394394
#if CC_ENABLE_CACHE_TEXTURE_DATA
395395
, _dirtyFBOListener(nullptr)

‎cocos/renderer/CCMaterial.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -419,8 +419,8 @@ std::string Material::getName() const
419419

420420
Material::Material()
421421
: _name("")
422-
, _target(nullptr)
423422
, _currentTechnique(nullptr)
423+
, _target(nullptr)
424424
{
425425
}
426426

‎cocos/renderer/CCMeshCommand.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -45,15 +45,15 @@ NS_CC_BEGIN
4545

4646

4747
MeshCommand::MeshCommand()
48-
: _textureID(0)
49-
, _glProgramState(nullptr)
50-
, _displayColor(1.0f, 1.0f, 1.0f, 1.0f)
48+
: _displayColor(1.0f, 1.0f, 1.0f, 1.0f)
5149
, _matrixPalette(nullptr)
5250
, _matrixPaletteSize(0)
5351
, _materialID(0)
5452
, _vao(0)
5553
, _material(nullptr)
54+
, _glProgramState(nullptr)
5655
, _stateBlock(nullptr)
56+
, _textureID(0)
5757
{
5858
_type = RenderCommand::Type::MESH_COMMAND;
5959

‎cocos/renderer/CCRenderState.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,10 @@ RenderState::StateBlock* RenderState::StateBlock::_defaultState = nullptr;
3939

4040

4141
RenderState::RenderState()
42-
: _texture(nullptr)
43-
, _hash(0)
42+
: _hash(0)
4443
, _hashDirty(true)
4544
, _parent(nullptr)
45+
, _texture(nullptr)
4646
{
4747
_state = StateBlock::create();
4848
CC_SAFE_RETAIN(_state);
@@ -915,4 +915,4 @@ void RenderState::StateBlock::setDepthFunction(DepthFunction func)
915915
// }
916916
//}
917917

918-
NS_CC_END
918+
NS_CC_END

‎cocos/renderer/CCTextureCache.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -733,13 +733,13 @@ bool VolatileTextureMgr::_isReloading = false;
733733

734734
VolatileTexture::VolatileTexture(Texture2D *t)
735735
: _texture(t)
736+
, _uiImage(nullptr)
736737
, _cashedImageType(kInvalid)
737738
, _textureData(nullptr)
738739
, _pixelFormat(Texture2D::PixelFormat::RGBA8888)
739740
, _fileName("")
740-
, _text("")
741-
, _uiImage(nullptr)
742741
, _hasMipmaps(false)
742+
, _text("")
743743
{
744744
_texParams.minFilter = GL_LINEAR;
745745
_texParams.magFilter = GL_LINEAR;

‎cocos/renderer/CCVertexAttribBinding.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ static GLuint __maxVertexAttribs = 0;
4646
static std::vector<VertexAttribBinding*> __vertexAttribBindingCache;
4747

4848
VertexAttribBinding::VertexAttribBinding() :
49-
_handle(0), _attributes(), _meshIndexData(nullptr), _glProgramState(nullptr)
49+
_handle(0), _meshIndexData(nullptr), _glProgramState(nullptr), _attributes()
5050
{
5151
}
5252

‎cocos/ui/UIEditBox/Mac/CCUIEditBoxMac.h

+4-2
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@
4444

4545
@property (nonatomic, readonly, getter = isEditState) BOOL editState;
4646
@property (nonatomic, assign) void *editBox;
47-
@property (nonatomic, assign) NSString *text;
4847
@property (nonatomic, assign) NSRect frameRect;
4948
@property (nonatomic, assign) cocos2d::ui::EditBox::InputFlag dataInputMode;
5049
@property (nonatomic, assign) cocos2d::ui::EditBox::KeyboardReturnType keyboardReturnType;
@@ -62,11 +61,14 @@
6261
- (void)setInputMode:(cocos2d::ui::EditBox::InputMode)inputMode;
6362
- (void)setInputFlag:(cocos2d::ui::EditBox::InputFlag)inputFlag;
6463
- (void)setReturnType:(cocos2d::ui::EditBox::KeyboardReturnType)returnType;
65-
64+
- (void)setTextHorizontalAlignment:(cocos2d::TextHAlignment)alignment;
6665
- (void)setPlaceHolder:(const char *)text;
6766
- (void)setVisible:(BOOL)visible;
6867
- (void)setTextColor:(NSColor*)color;
6968
- (void)setFont:(NSFont *)font;
7069
- (void)setPlaceholderFontColor:(NSColor*)color;
7170
- (void)setPlaceholderFont:(NSFont*)font;
71+
- (void)setText:(NSString *)text;
72+
- (const char*) getText;
73+
7274
@end

‎cocos/ui/UIEditBox/Mac/CCUIEditBoxMac.mm

+1
Original file line numberDiff line numberDiff line change
@@ -298,6 +298,7 @@ - (void)setPlaceholderFont:(NSFont*)font
298298
{
299299
self.textInput.ccui_placeholderFont = font;
300300
}
301+
301302
- (void)setText:(NSString *)text
302303
{
303304
self.textInput.ccui_text = text;

‎cocos/ui/UIVideoPlayer-android.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -71,11 +71,11 @@ using namespace cocos2d::experimental::ui;
7171
static std::unordered_map<int, VideoPlayer*> s_allVideoPlayers;
7272

7373
VideoPlayer::VideoPlayer()
74-
: _videoPlayerIndex(-1)
75-
, _eventCallback(nullptr)
74+
: _fullScreenDirty(false)
7675
, _fullScreenEnabled(false)
77-
, _fullScreenDirty(false)
7876
, _keepAspectRatioEnabled(false)
77+
, _videoPlayerIndex(-1)
78+
, _eventCallback(nullptr)
7979
{
8080
_videoPlayerIndex = createVideoWidgetJNI();
8181
s_allVideoPlayers[_videoPlayerIndex] = this;

‎cocos/ui/UIVideoPlayer-ios.mm

+4-4
Original file line numberDiff line numberDiff line change
@@ -263,12 +263,12 @@ -(void) stop
263263
//------------------------------------------------------------------------------------------------------------
264264

265265
VideoPlayer::VideoPlayer()
266-
: _videoPlayerIndex(-1)
267-
, _eventCallback(nullptr)
268-
, _fullScreenEnabled(false)
266+
: _isPlaying(false)
269267
, _fullScreenDirty(false)
268+
, _fullScreenEnabled(false)
270269
, _keepAspectRatioEnabled(false)
271-
, _isPlaying(false)
270+
, _videoPlayerIndex(-1)
271+
, _eventCallback(nullptr)
272272
{
273273
_videoView = [[UIVideoViewWrapperIos alloc] init:this];
274274

‎cocos/ui/UIWebViewImpl-ios.h

+1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
#define __COCOS2D_UI_WEBVIEWIMPL_IOS_H_
2727
/// @cond DO_NOT_SHOW
2828

29+
#include <stdint.h>
2930
#include <iosfwd>
3031

3132
@class UIWebViewWrapper;

0 commit comments

Comments
 (0)
Please sign in to comment.