Browse Source

Cleaning up

Panagiotis Christopoulos Charitos 10 years ago
parent
commit
ab49a04a78

+ 0 - 4
include/anki/Util.h

@@ -54,22 +54,18 @@
 #include "anki/util/Functions.h"
 #include "anki/util/Hash.h"
 #include "anki/util/HighRezTimer.h"
-#include "anki/util/LinuxMalinfo.h"
 #include "anki/util/List.h"
 #include "anki/util/Logger.h"
 #include "anki/util/Memory.h"
 #include "anki/util/NonCopyable.h"
 #include "anki/util/Hierarchy.h"
-//#include "anki/util/Observer.h"
 #include "anki/util/Ptr.h"
-#include "anki/util/ScopeDestroyer.h"
 #include "anki/util/Singleton.h"
 #include "anki/util/StdTypes.h"
 #include "anki/util/String.h"
 #include "anki/util/StringList.h"
 #include "anki/util/System.h"
 #include "anki/util/Thread.h"
-#include "anki/util/Vector.h"
 #include "anki/util/Visitor.h"
 
 #endif

+ 1 - 1
include/anki/gr/gl/GrManagerImpl.h

@@ -27,7 +27,7 @@ public:
 
 	~GrManagerImpl();
 
-	ANKI_USE_RESULT Error create(GrManagerInitializer& init);
+	void create(GrManagerInitializer& init);
 
 	const RenderingThread& getRenderingThread() const
 	{

+ 1 - 1
include/anki/gr/gl/RenderingThread.h

@@ -40,7 +40,7 @@ public:
 
 	/// Start the working thread
 	/// @note Don't free the context before calling #stop
-	ANKI_USE_RESULT Error start(
+	void start(
 		MakeCurrentCallback makeCurrentCb, void* makeCurrentCbData, void* ctx,
 		SwapBuffersCallback swapBuffersCallback, void* swapBuffersCbData,
 		Bool registerMessages);

+ 1 - 1
include/anki/resource/Skin.h

@@ -5,10 +5,10 @@
 
 #pragma once
 
+#if 0
 #include "anki/resource/ResourceManager.h"
 #include "anki/resource/Model.h"
 
-#if 0
 namespace anki {
 
 /// Skin resource

+ 4 - 7
include/anki/scene/SkinNode.h

@@ -3,9 +3,9 @@
 // Code licensed under the BSD License.
 // http://www.anki3d.org/LICENSE
 
-#ifndef ANKI_SCENE_SKIN_NODE_H
-#define ANKI_SCENE_SKIN_NODE_H
+#pragma once
 
+#if 0
 #include "anki/scene/SceneNode.h"
 #include "anki/scene/RenderComponent.h"
 #include "anki/scene/MoveComponent.h"
@@ -17,7 +17,6 @@ namespace anki {
 
 class Skin;
 
-#if 0
 
 /// Skin specific mesh. It contains a number of VBOs for transform feedback
 class SkinMesh: public MeshBase
@@ -67,7 +66,7 @@ public:
 	/// @}
 
 private:
-	Vbo vbo; ///< Contains the transformed P,N,T 
+	Vbo vbo; ///< Contains the transformed P,N,T
 	const MeshBase* mesh; ///< The resource
 };
 
@@ -322,8 +321,6 @@ private:
 		SceneVector<Vec3>& heads, SceneVector<Vec3>& tails);
 };
 
-#endif
-
 } // end namespace
-
 #endif
+

+ 2 - 4
include/anki/util/Hierarchy.h

@@ -3,8 +3,7 @@
 // Code licensed under the BSD License.
 // http://www.anki3d.org/LICENSE
 
-#ifndef ANKI_UTIL_HIERARCHY_H
-#define ANKI_UTIL_HIERARCHY_H
+#pragma once
 
 #include "anki/util/Assert.h"
 #include "anki/util/List.h"
@@ -27,7 +26,7 @@ public:
 	using Container = List<Value*>;
 
 	Hierarchy()
-	:	m_parent(nullptr)
+		: m_parent(nullptr)
 	{}
 
 	/// Delete children from the last entered to the first and update parent
@@ -107,4 +106,3 @@ private:
 
 #include "anki/util/Hierarchy.inl.h"
 
-#endif

+ 1 - 3
include/anki/util/HighRezTimer.h

@@ -3,8 +3,7 @@
 // Code licensed under the BSD License.
 // http://www.anki3d.org/LICENSE
 
-#ifndef ANKI_UTIL_HIGH_REZ_TIMER_H
-#define ANKI_UTIL_HIGH_REZ_TIMER_H
+#pragma once
 
 #include "anki/util/StdTypes.h"
 
@@ -45,4 +44,3 @@ private:
 
 } // end namespace anki
 
-#endif

+ 0 - 42
include/anki/util/LinuxMalinfo.h

@@ -1,42 +0,0 @@
-// Copyright (C) 2009-2015, Panagiotis Christopoulos Charitos.
-// All rights reserved.
-// Code licensed under the BSD License.
-// http://www.anki3d.org/LICENSE
-
-#ifndef ANKI_UTIL_LINUXMALINFO_H
-#define ANKI_UTIL_LINUXMALINFO_H
-
-
-#if defined(PLATFORM_LINUX)
-
-#	include <malloc.h>
-
-	typedef struct mallinfo Mallinfo;
-
-	inline Mallinfo GetMallInfo()
-	{
-		return mallinfo();
-	}
-
-	inline void printMallInfo(const Mallinfo& minfo)
-	{
-		PRINT("used:" << minfo.uordblks << " free:" << minfo.fordblks << 
-			" total:" << minfo.arena);
-	}
-
-	inline void printMallInfoDiff(const Mallinfo& prev, const Mallinfo& now)
-	{
-		Mallinfo diff;
-		diff.uordblks = now.uordblks-prev.uordblks;
-		diff.fordblks = now.fordblks-prev.fordblks;
-		diff.arena = now.arena-prev.arena;
-		printMallInfo(diff);
-	}
-
-#	define MALLINFO_BEGIN Mallinfo __m__ = GetMallInfo();
-
-#	define MALLINFO_END printMallInfoDiff(__m__, GetMallInfo());
-
-#endif
-
-#endif

+ 1 - 1
include/anki/util/List.h

@@ -30,7 +30,7 @@ public:
 
 	template<typename... TArgs>
 	ListNode(TArgs&&... args)
-	:	m_value(std::forward<TArgs>(args)...)
+		: m_value(std::forward<TArgs>(args)...)
 	{}
 };
 

+ 0 - 160
include/anki/util/Observer.h

@@ -1,160 +0,0 @@
-// Copyright (C) 2009-2015, Panagiotis Christopoulos Charitos.
-// All rights reserved.
-// Code licensed under the BSD License.
-// http://www.anki3d.org/LICENSE
-
-#ifndef ANKI_UTIL_OBSERVER_H
-#define ANKI_UTIL_OBSERVER_H
-
-#include "anki/util/Vector.h"
-#include "anki/util/Functions.h"
-
-namespace anki {
-
-/// @addtogroup util_patterns
-/// @{
-
-/// The observer interface template
-template<typename T>
-struct Observer
-{
-	typedef T Value; ///< The type of the notification value
-
-	virtual ~Observer()
-	{}
-
-	virtual void notify(Value notificationVal) = 0;
-};
-
-/// An over-qualified observer
-template<typename ObservingClass, typename Value,
-	void (ObservingClass::*method)(Value)>
-struct SuperObserver: Observer<Value>
-{
-	ObservingClass* receiver;
-
-	SuperObserver(ObservingClass* receiver_)
-		: receiver(receiver_)
-	{
-		ANKI_ASSERT(receiver != nullptr);
-	}
-
-	void notify(Value x)
-	{
-		(receiver->*method)(x);
-	}
-};
-
-/// Basically a container of observers
-template<typename T, typename Alloc = Allocator<Observer<T>*>>
-class Observable
-{
-public:
-	typedef T Value;
-	typedef Observer<Value> ObserverType;
-	typedef Vector<ObserverType*, Alloc> Container;
-
-	Observable(const Alloc& alloc = Alloc())
-		: observers(alloc)
-	{}
-
-	~Observable()
-	{
-		Alloc alloc = observers.get_allocator();
-		for(ObserverType* x : observers)
-		{
-			alloc.destroy(x);
-			alloc.deallocate(x, 1);
-		}
-	}
-
-	/// XXX
-	template<typename Observer, typename... Args>
-	Observer* newObserver(Args&&... args)
-	{
-		typedef typename Alloc::template rebind<Observer>::other UberAlloc;
-
-		UberAlloc alloc(observers.get_allocator());
-
-		Observer* ptr = alloc.allocate(1);
-		alloc.construct(ptr, std::forward<Args>(args)...);
-
-		return ptr;
-	}
-
-	/// Add a new observer. The Observable takes ownership of the
-	/// pointer and its responsible of cleaning
-	void addNewObserver(ObserverType* x)
-	{
-		observers.push_back(x);
-	}
-
-	/// Notify all observers
-	void notifyAll(Value x)
-	{
-		for(ObserverType* obs : observers)
-		{
-			obs->notify(x);
-		}
-	}
-
-	/// Alias to notifyAll
-	void operator()(Value x)
-	{
-		notifyAll(x);
-	}
-
-private:
-	Container observers;
-};
-
-/// If a class has slots it should include this
-/// @code
-/// class Foo {
-/// 	ANKI_HAS_SLOTS(Foo)
-/// };
-/// @endcode
-#define ANKI_HAS_SLOTS(_class) \
-	typedef _class ObservingType;
-
-/// Define a slot. This should follow the method declaration
-/// @code
-/// class Foo {
-/// 	ANKI_HAS_SLOTS(Foo)
-///
-/// 	void slot(const float&)
-/// 	{...}
-/// 	ANKI_SLOT(updateZFar, const float&)
-/// };
-/// @endcode
-#define ANKI_SLOT(_slot, _type) \
-	typedef SuperObserver<ObservingType, _type, &ObservingType::_slot> \
-		Observing_##_slot;
-
-/// Define a signal
-#define ANKI_SIGNAL(_type, _name) \
-	Observable<_type> _name;
-
-/// Define a signal with allocator
-#define ANKI_SIGNAL_ALLOCATOR(_Type, _name, _AllocType) \
-	Observable<_Type, _AllocType> _name;
-
-/// It doesn't do anything. Its purpose is to make the code more understandable
-#define ANKI_EMIT this->
-
-/// Connect a signal to a slot
-/// @note Use RemovePointer so you can be able to use the macro outside of the
-///       _receiver body
-#define ANKI_CONNECT(_sender, _signal, _receiver, _slot) \
-	do { \
-		auto observer = (_sender)->_signal.newObserver< \
-			RemovePointer<decltype(_receiver)>::Type::Observing_##_slot>( \
-			_receiver); \
-		(_sender)->_signal.addNewObserver(observer); \
-	} while(false);
-
-/// @}
-
-} // end namespace anki
-
-#endif

+ 1 - 3
include/anki/util/Rtti.h

@@ -3,8 +3,7 @@
 // Code licensed under the BSD License.
 // http://www.anki3d.org/LICENSE
 
-#ifndef ANKI_UTIL_RTTI_H
-#define ANKI_UTIL_RTTI_H
+#pragma once
 
 #include "anki/util/Assert.h"
 
@@ -79,4 +78,3 @@ inline TTo dcast(TFrom* c)
 
 } // end namespace anki
 
-#endif

+ 0 - 37
include/anki/util/ScopeDestroyer.h

@@ -1,37 +0,0 @@
-// Copyright (C) 2009-2015, Panagiotis Christopoulos Charitos.
-// All rights reserved.
-// Code licensed under the BSD License.
-// http://www.anki3d.org/LICENSE
-
-#ifndef ANKI_UTIL_SCOPE_DESTROYER_H
-#define ANKI_UTIL_SCOPE_DESTROYER_H
-
-namespace anki {
-
-/// @addtogroup util_containers
-/// @{
-
-/// A class that destroys other instances when it get out of scope.
-template<typename TInstance, typename TAlloc>
-class ScopeDestroyer
-{
-public:
-	TInstance* m_inst;
-	TAlloc m_alloc;
-
-	ScopeDestroyer(TInstance* inst, TAlloc alloc)
-	:	m_inst(inst),
-		m_alloc(alloc)
-	{}
-
-	~ScopeDestroyer()
-	{
-		m_inst->destroy(m_alloc);
-	}
-};
-
-/// @}
-
-} // end namespace anki
-
-#endif

+ 0 - 1
include/anki/util/String.h

@@ -8,7 +8,6 @@
 #include "anki/util/DArray.h"
 #include "anki/util/Array.h"
 #include "anki/util/NonCopyable.h"
-#include "anki/util/ScopeDestroyer.h"
 #include <cstring>
 #include <cmath> // For HUGE_VAL
 #include <climits> // For LLONG_MAX

+ 1 - 3
include/anki/util/System.h

@@ -3,8 +3,7 @@
 // Code licensed under the BSD License.
 // http://www.anki3d.org/LICENSE
 
-#ifndef ANKI_UTIL_SYSTEM_H
-#define ANKI_UTIL_SYSTEM_H
+#pragma once
 
 #include "anki/util/StdTypes.h"
 
@@ -23,4 +22,3 @@ extern void printBacktrace();
 
 } // end namespace anki
 
-#endif

+ 6 - 9
include/anki/util/Thread.h

@@ -3,8 +3,7 @@
 // Code licensed under the BSD License.
 // http://www.anki3d.org/LICENSE
 
-#ifndef ANKI_UTIL_THREAD_H
-#define ANKI_UTIL_THREAD_H
+#pragma once
 
 #include "anki/util/StdTypes.h"
 #include "anki/util/Array.h"
@@ -136,7 +135,7 @@ private:
 class SpinLock: public NonCopyable
 {
 public:
-	/// Lock 
+	/// Lock
 	void lock()
 	{
 		while(m_lock.test_and_set(std::memory_order_acquire))
@@ -150,7 +149,7 @@ public:
 	}
 
 private:
-	std::atomic_flag m_lock = ATOMIC_FLAG_INIT;	
+	std::atomic_flag m_lock = ATOMIC_FLAG_INIT;
 };
 
 /// Lock guard. When constructed it locks a TMutex and unlocks it when it gets
@@ -160,7 +159,7 @@ class LockGuard
 {
 public:
 	LockGuard(TMutex& mtx)
-	:	m_mtx(&mtx)
+		: m_mtx(&mtx)
 	{
 		m_mtx->lock();
 	}
@@ -213,7 +212,7 @@ public:
 		virtual Error operator()(U32 taskId, PtrSize threadsCount) = 0;
 
 		/// Chose a starting and end index
-		static void choseStartEnd(U32 taskId, PtrSize threadsCount, 
+		static void choseStartEnd(U32 taskId, PtrSize threadsCount,
 			PtrSize elementsCount, PtrSize& start, PtrSize& end)
 		{
 			F32 tid = taskId;
@@ -223,7 +222,7 @@ public:
 		}
 	};
 
-	/// Constructor 
+	/// Constructor
 	Threadpool(U32 threadsCount);
 
 	~Threadpool();
@@ -276,5 +275,3 @@ private:
 
 } // end namespace anki
 
-#endif
-

+ 0 - 50
include/anki/util/Vector.h

@@ -1,50 +0,0 @@
-// Copyright (C) 2009-2015, Panagiotis Christopoulos Charitos.
-// All rights reserved.
-// Code licensed under the BSD License.
-// http://www.anki3d.org/LICENSE
-
-#ifndef ANKI_UTIL_VECTOR_H
-#define ANKI_UTIL_VECTOR_H
-
-#include "anki/util/Assert.h"
-#include "anki/util/Allocator.h"
-#include <vector>
-
-namespace anki {
-
-/// @addtogroup util_containers
-/// @{
-
-/// A semi-custom implementation of vector
-template<typename T, typename TAlloc = HeapAllocator<T>>
-class Vector: public std::vector<T, TAlloc>
-{
-public:
-	using Base = std::vector<T, TAlloc>;
-
-	using Base::Base;
-	using Base::operator=;
-
-	typename Base::reference operator[](typename Base::size_type i)
-	{
-		ANKI_ASSERT(i < Base::size() && "Vector out of bounds");
-		return Base::operator[](i);
-	}
-
-	typename Base::const_reference operator[](typename Base::size_type i) const
-	{
-		ANKI_ASSERT(i < Base::size() && "Vector out of bounds");
-		return Base::operator[](i);
-	}
-
-	PtrSize getSizeInBytes() const
-	{
-		return Base::size() * sizeof(T);
-	}
-};
-
-/// @}
-
-} // end namespace anki
-
-#endif

+ 2 - 2
src/gr/gl/GrManager.cpp

@@ -29,9 +29,9 @@ Error GrManager::create(Initializer& init)
 
 	m_cacheDir.create(m_alloc, init.m_cacheDirectory);
 	m_impl.reset(m_alloc.newInstance<GrManagerImpl>(this));
-	Error err = m_impl->create(init);
+	m_impl->create(init);
 
-	return err;
+	return ErrorCode::NONE;
 }
 
 //==============================================================================

+ 6 - 16
src/gr/gl/GrManagerImpl.cpp

@@ -29,29 +29,19 @@ GrAllocator<U8> GrManagerImpl::getAllocator() const
 }
 
 //==============================================================================
-Error GrManagerImpl::create(GrManagerInitializer& init)
+void GrManagerImpl::create(GrManagerInitializer& init)
 {
-	Error err = ErrorCode::NONE;
-
 	// Create thread
 	m_thread =
 		m_manager->getAllocator().newInstance<RenderingThread>(m_manager);
 
 	// Start it
-	if(!err)
-	{
-		err = m_thread->start(init.m_makeCurrentCallback,
-			init.m_makeCurrentCallbackData, init.m_ctx,
-			init.m_swapBuffersCallback, init.m_swapBuffersCallbackData,
-			init.m_registerDebugMessages);
-	}
-
-	if(!err)
-	{
-		m_thread->syncClientServer();
-	}
+	m_thread->start(init.m_makeCurrentCallback,
+		init.m_makeCurrentCallbackData, init.m_ctx,
+		init.m_swapBuffersCallback, init.m_swapBuffersCallbackData,
+		init.m_registerDebugMessages);
 
-	return err;
+	m_thread->syncClientServer();
 }
 
 } // end namespace anki

+ 1 - 3
src/gr/gl/RenderingThread.cpp

@@ -118,7 +118,7 @@ void RenderingThread::finishCommandBuffer(CommandBufferPtr commands)
 }
 
 //==============================================================================
-Error RenderingThread::start(
+void RenderingThread::start(
 	MakeCurrentCallback makeCurrentCb, void* makeCurrentCbData, void* ctx,
 	SwapBuffersCallback swapBuffersCallback, void* swapBuffersCbData,
 	Bool registerMessages)
@@ -152,8 +152,6 @@ Error RenderingThread::start(
 
 	ANKI_LOGW("GL queue works in synchronous mode");
 #endif
-
-	return ErrorCode::NONE;
 }
 
 //==============================================================================

+ 2 - 2
src/resource/SkelAnim.cpp

@@ -3,6 +3,7 @@
 // Code licensed under the BSD License.
 // http://www.anki3d.org/LICENSE
 
+#if 0
 #include "anki/resource/SkelAnim.h"
 
 namespace anki {
@@ -10,7 +11,6 @@ namespace anki {
 //==============================================================================
 void SkelAnim::load(const char* filename)
 {
-#if 0
 	scanner::Scanner scanner(filename);
 	const scanner::Token* token;
 
@@ -67,7 +67,7 @@ void SkelAnim::load(const char* filename)
 
 
 	framesNum = keyframes[keyframes.size() - 1] + 1;
-#endif
 }
 
 } // end namespace
+#endif

+ 3 - 2
src/resource/Skin.cpp

@@ -3,6 +3,7 @@
 // Code licensed under the BSD License.
 // http://www.anki3d.org/LICENSE
 
+#if 0
 #include "anki/resource/Skin.h"
 #include "anki/resource/Model.h"
 #include "anki/resource/Skeleton.h"
@@ -13,7 +14,7 @@
 #include "anki/resource/Material.h"
 #include "anki/misc/Xml.h"
 
-#if 0
+
 namespace anki {
 
 //==============================================================================
@@ -69,7 +70,7 @@ void Skin::load(const char* filename)
 			{
 				throw ANKI_EXCEPTION(
 					"Skeleton animation %s and skeleton %s "
-					"dont have equal bone count", 
+					"dont have equal bone count",
 					skelAnim.getResourceName().c_str(),
 					skeleton.getResourceName().c_str());
 			}

+ 3 - 12
src/scene/SkinNode.cpp

@@ -3,6 +3,7 @@
 // Code licensed under the BSD License.
 // http://www.anki3d.org/LICENSE
 
+#if 0
 #include "anki/scene/SkinNode.h"
 #include "anki/resource/Skin.h"
 #include "anki/resource/Skeleton.h"
@@ -13,8 +14,6 @@ namespace anki {
 
 #define BUFFER_OFFSET(i) ((char *)NULL + (i))
 
-#if 0
-
 //==============================================================================
 // SkinMesh                                                                    =
 //==============================================================================
@@ -71,7 +70,6 @@ SkinModelPatch::SkinModelPatch(const ModelPatchBase* mpatch_,
 		xfbVaos(alloc)
 {
 	// XXX set spatial private
-#if 0
 	// Create the model patch
 	skinMeshes.resize(mpatch->getMeshesCount());
 	for(U i = 0; i < mpatch->getMeshesCount(); i++)
@@ -124,7 +122,6 @@ SkinModelPatch::SkinModelPatch(const ModelPatchBase* mpatch_,
 		ANKI_ASSERT(vbo != nullptr);
 		xfbVao.attachElementArrayBufferVbo(vbo);
 	}
-#endif
 }
 
 //==============================================================================
@@ -236,7 +233,6 @@ void SkinNode::frameUpdate(float prevUpdateTime, float crntTime, int f)
 void SkinNode::interpolate(const SkelAnim& animation, float frame,
 	SceneVector<Vec3>& boneTranslations, SceneVector<Mat3>& boneRotations)
 {
-#if 0
 	ANKI_ASSERT(frame < animation.getFramesNum());
 
 	// calculate the t (used in slerp and lerp) using the keyframs and the
@@ -296,14 +292,12 @@ void SkinNode::interpolate(const SkelAnim& animation, float frame,
 			localTransl = Vec3(0.0, 0.0, 0.0);
 		}
 	}
-#endif
 }
 
 //==============================================================================
 void SkinNode::updateBoneTransforms(const Skeleton& skeleton,
 	SceneVector<Vec3>& boneTranslations, SceneVector<Mat3>& boneRotations)
 {
-#if 0
 	std::array<uint, 128> queue;
 	uint head = 0, tail = 0;
 
@@ -356,7 +350,6 @@ void SkinNode::updateBoneTransforms(const Skeleton& skeleton,
 			queue[tail++] = boned.getChild(i).getId();
 		}
 	}
-#endif
 }
 
 //==============================================================================
@@ -365,7 +358,6 @@ void SkinNode::deformHeadsTails(const Skeleton& skeleton,
     const SceneVector<Mat3>& boneRotations,
 	SceneVector<Vec3>& heads, SceneVector<Vec3>& tails)
 {
-#if 0
 	for(uint i = 0; i < skeleton.getBones().size(); i++)
 	{
 		const Mat3& rot = boneRotations[i];
@@ -374,9 +366,8 @@ void SkinNode::deformHeadsTails(const Skeleton& skeleton,
 		heads[i] = skeleton.getBones()[i].getHead().getTransformed(transl, rot);
 		tails[i] = skeleton.getBones()[i].getTail().getTransformed(transl, rot);
 	}
-#endif
 }
 
-#endif
-
 } // end namespace
+
+#endif

+ 8 - 8
src/util/Thread.cpp

@@ -30,15 +30,15 @@ public:
 	Mutex m_mutex; ///< Protect the task
 	ConditionVariable m_condVar; ///< To wake up the thread
 	Threadpool::Task* m_task; ///< Its NULL if there is no pending task
-	Threadpool* m_threadpool; 
+	Threadpool* m_threadpool;
 	Bool8 m_quit = false;
 
 	/// Constructor
 	ThreadpoolThread(U32 id, Threadpool* threadpool)
-	:	m_id(id),
-		m_thread("anki_threadpool"),
-		m_task(nullptr), 
-		m_threadpool(threadpool)
+		: m_id(id)
+		, m_thread("anki_threadpool")
+		, m_task(nullptr)
+		, m_threadpool(threadpool)
 	{
 		ANKI_ASSERT(threadpool);
 		m_thread.start(this, threadCallback);
@@ -58,10 +58,10 @@ private:
 	/// Thread callaback
 	static Error threadCallback(Thread::Info& info)
 	{
-		ThreadpoolThread& self = 
+		ThreadpoolThread& self =
 			*reinterpret_cast<ThreadpoolThread*>(info.m_userData);
 		Barrier& barrier = self.m_threadpool->m_barrier;
-		Mutex& mtx = self.m_mutex; 
+		Mutex& mtx = self.m_mutex;
 		const PtrSize threadCount = self.m_threadpool->getThreadsCount();
 		Bool quit = false;
 
@@ -150,7 +150,7 @@ Threadpool::~Threadpool()
 		thread.m_quit = true;
 		thread.assignNewTask(&m_dummyTask); // Wake it
 	}
-	
+
 	Error err = waitForAllThreadsToFinish();
 	(void)err;
 

+ 0 - 1
testapp/Main.cpp

@@ -8,7 +8,6 @@
 #include "anki/core/App.h"
 #include "anki/resource/Mesh.h"
 #include "anki/resource/Material.h"
-#include "anki/resource/SkelAnim.h"
 #include "anki/script/ScriptManager.h"
 #include "anki/core/StdinListener.h"
 #include "anki/resource/Model.h"