From 0866349f5875a30077df417dc620b5e21c82e2a6 Mon Sep 17 00:00:00 2001 From: Attila Uygun Date: Wed, 27 Oct 2021 14:19:10 +0200 Subject: [PATCH] Code cleanup - Use absolute paths for includes. - Add file path to include guards. - Use uint64_t for resource id. - Compile engine code into separate lib. - Compile time and run time string hashing functions. - Rename Worker to ThreadPool. - Update .gitignore - Code generator for texture compressor. --- .gitignore | 6 +- build/android/app/CMakeLists.txt | 3 +- build/gn/BUILD.gn | 1 + build/linux/Makefile | 52 +++-- src/base/BUILD.gn | 4 +- src/base/closure.h | 6 +- src/base/collusion_test.cc | 2 +- src/base/collusion_test.h | 8 +- src/base/concurrent_stack.h | 6 +- src/base/file.h | 6 +- src/base/hash.h | 29 ++- src/base/interpolation.h | 6 +- src/base/log.cc | 2 +- src/base/log.h | 6 +- src/base/mem.h | 8 +- src/base/misc.h | 6 +- src/base/random.cc | 6 +- src/base/random.h | 6 +- src/base/semaphore.h | 8 +- src/base/sinc_resampler.cc | 4 +- src/base/sinc_resampler.h | 8 +- src/base/spinlock.h | 6 +- src/base/task_runner.cc | 4 +- src/base/task_runner.h | 8 +- src/base/{worker.cc => thread_pool.cc} | 26 +-- src/base/{worker.h => thread_pool.h} | 28 +-- src/base/timer.cc | 2 +- src/base/timer.h | 6 +- src/base/vecmath.h | 10 +- src/demo/credits.cc | 16 +- src/demo/credits.h | 10 +- src/demo/damage_type.h | 6 +- src/demo/demo.cc | 20 +- src/demo/demo.h | 33 +-- src/demo/enemy.cc | 25 +-- src/demo/enemy.h | 19 +- src/demo/hud.cc | 17 +- src/demo/hud.h | 14 +- src/demo/menu.cc | 21 +- src/demo/menu.h | 16 +- src/demo/player.cc | 17 +- src/demo/player.h | 19 +- src/demo/sky_quad.cc | 16 +- src/demo/sky_quad.h | 12 +- src/engine/animatable.cc | 2 +- src/engine/animatable.h | 10 +- src/engine/animator.cc | 8 +- src/engine/animator.h | 10 +- src/engine/audio/audio.h | 10 +- src/engine/audio/audio_alsa.cc | 8 +- src/engine/audio/audio_alsa.h | 8 +- src/engine/audio/audio_base.cc | 37 ++-- src/engine/audio/audio_base.h | 32 +-- src/engine/audio/audio_forward.h | 6 +- src/engine/audio/audio_oboe.cc | 6 +- src/engine/audio/audio_oboe.h | 13 +- src/engine/drawable.cc | 5 +- src/engine/drawable.h | 8 +- src/engine/engine.cc | 38 ++-- src/engine/engine.h | 14 +- src/engine/font.cc | 12 +- src/engine/font.h | 8 +- src/engine/game.h | 6 +- src/engine/game_factory.h | 6 +- src/engine/image.cc | 14 +- src/engine/image.h | 10 +- src/engine/image_quad.cc | 12 +- src/engine/image_quad.h | 12 +- src/engine/input_event.h | 10 +- src/engine/mesh.cc | 10 +- src/engine/mesh.h | 9 +- src/engine/persistent_data.cc | 8 +- src/engine/persistent_data.h | 10 +- src/engine/platform/asset_file.cc | 5 +- src/engine/platform/asset_file.h | 15 +- src/engine/platform/asset_file_android.cc | 6 +- src/engine/platform/asset_file_linux.cc | 3 +- src/engine/platform/platform.cc | 18 +- src/engine/platform/platform.h | 14 +- src/engine/platform/platform_android.cc | 17 +- src/engine/platform/platform_linux.cc | 18 +- src/engine/renderer/geometry.cc | 6 +- src/engine/renderer/geometry.h | 10 +- src/engine/renderer/opengl/opengl.h | 12 +- src/engine/renderer/opengl/render_command.cc | 8 +- src/engine/renderer/opengl/render_command.h | 18 +- src/engine/renderer/opengl/renderer_opengl.cc | 25 ++- src/engine/renderer/opengl/renderer_opengl.h | 12 +- .../opengl/renderer_opengl_android.cc | 6 +- .../renderer/opengl/renderer_opengl_linux.cc | 4 +- src/engine/renderer/render_resource.h | 6 +- src/engine/renderer/renderer.h | 12 +- src/engine/renderer/renderer_types.cc | 4 +- src/engine/renderer/renderer_types.h | 6 +- src/engine/renderer/shader.cc | 6 +- src/engine/renderer/shader.h | 12 +- src/engine/renderer/texture.cc | 8 +- src/engine/renderer/texture.h | 8 +- src/engine/renderer/vulkan/renderer_vulkan.cc | 28 +-- src/engine/renderer/vulkan/renderer_vulkan.h | 16 +- .../vulkan/renderer_vulkan_android.cc | 4 +- .../renderer/vulkan/renderer_vulkan_linux.cc | 4 +- src/engine/renderer/vulkan/vulkan_context.cc | 6 +- src/engine/renderer/vulkan/vulkan_context.h | 10 +- .../renderer/vulkan/vulkan_context_android.cc | 4 +- .../renderer/vulkan/vulkan_context_linux.cc | 4 +- src/engine/shader_source.cc | 8 +- src/engine/shader_source.h | 6 +- src/engine/solid_quad.cc | 10 +- src/engine/solid_quad.h | 8 +- src/engine/sound.cc | 12 +- src/engine/sound.h | 6 +- src/engine/sound_player.cc | 12 +- src/engine/sound_player.h | 10 +- .../build_constant_color_dxt_tables.py | 197 ++++++++++++++++++ 115 files changed, 856 insertions(+), 624 deletions(-) rename src/base/{worker.cc => thread_pool.cc} (64%) rename src/base/{worker.h => thread_pool.h} (66%) create mode 100644 src/third_party/texture_compressor/build_constant_color_dxt_tables.py diff --git a/.gitignore b/.gitignore index 5fcbfb2..d5b850d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,10 @@ build/android/.gradle +build/android/*.apk build/android/app/.cxx build/android/app/build build/android/build -build/linux/gltest_x86_64_debug -build/linux/gltest_x86_64_release +build/linux/demo_x86_64_debug +build/linux/demo_x86_64_release build/linux/obj +build/linux/woom out diff --git a/build/android/app/CMakeLists.txt b/build/android/app/CMakeLists.txt index 4f36d26..0008e4b 100644 --- a/build/android/app/CMakeLists.txt +++ b/build/android/app/CMakeLists.txt @@ -53,8 +53,8 @@ add_library(kaliber SHARED ../../../src/base/random.cc ../../../src/base/sinc_resampler.cc ../../../src/base/task_runner.cc + ../../../src/base/thread_pool.cc ../../../src/base/timer.cc - ../../../src/base/worker.cc ../../../src/demo/credits.cc ../../../src/demo/demo.cc ../../../src/demo/enemy.cc @@ -162,6 +162,7 @@ if (ANDROID_ABI STREQUAL arm64-v8a) endif() target_include_directories(kaliber PRIVATE + ../../../src ${ANDROID_NDK}/sources/android/native_app_glue ) diff --git a/build/gn/BUILD.gn b/build/gn/BUILD.gn index de9fcc5..baab99a 100644 --- a/build/gn/BUILD.gn +++ b/build/gn/BUILD.gn @@ -8,6 +8,7 @@ config("compiler_defaults") { cflags_cc = [ "-std=c++17", + "-I../../src", ] } } diff --git a/build/linux/Makefile b/build/linux/Makefile index 94c5811..92302fd 100644 --- a/build/linux/Makefile +++ b/build/linux/Makefile @@ -1,13 +1,14 @@ .DEFAULT_GOAL := all # --- Input variables --- + BUILD ?= release ifeq ($(findstring $(BUILD),debug release),) $(error BUILD must be set to debug or release) endif # Build all executables by default. -APPS ?= gltest +APPS ?= demo # If the VERBOSE flag isn't set, then mute superfluous output. ifeq ($(VERBOSE),) @@ -18,6 +19,7 @@ ifeq ($(VERBOSE),) endif # --- Internal variables --- + ARCH := $(shell uname -p) SRC_ROOT := $(abspath ../../src) OUTPUT_DIR := $(abspath .) @@ -51,7 +53,7 @@ endif CFLAGS += -msse2 # Let C++ inherit all C flags. -CXXFLAGS = $(CFLAGS) +CXXFLAGS = $(CFLAGS) -I$(SRC_ROOT) # Enable C++17 CXXFLAGS += -std=c++17 @@ -65,28 +67,21 @@ CFLAGS += -DFALLBACK_CONFIG_DIRS='"/etc/xdg"' CFLAGS += -DHAVE_SECURE_GETENV # --- Internal functions --- + app_exe = $(OUTPUT_DIR)/$(1)_$(ARCH)_$(BUILD) objs_from_src = $(patsubst $(SRC_ROOT)/%, $(BUILD_DIR)/%.o, $(basename $(1))) objs_from_src_in = $(call objs_from_src, $(shell find $(1) -name "*.cc" -o -name "*.cpp" -o -name "*.c")) -# --- gltest application --- -ifneq ($(filter gltest,$(APPS)),) +# --- Engine --- -GLTEST_SRC := \ +ENGINE_SRC := \ $(SRC_ROOT)/base/collusion_test.cc \ $(SRC_ROOT)/base/log.cc \ $(SRC_ROOT)/base/random.cc \ $(SRC_ROOT)/base/sinc_resampler.cc \ $(SRC_ROOT)/base/task_runner.cc \ + $(SRC_ROOT)/base/thread_pool.cc \ $(SRC_ROOT)/base/timer.cc \ - $(SRC_ROOT)/base/worker.cc \ - $(SRC_ROOT)/demo/credits.cc \ - $(SRC_ROOT)/demo/demo.cc \ - $(SRC_ROOT)/demo/enemy.cc \ - $(SRC_ROOT)/demo/hud.cc \ - $(SRC_ROOT)/demo/menu.cc \ - $(SRC_ROOT)/demo/player.cc \ - $(SRC_ROOT)/demo/sky_quad.cc \ $(SRC_ROOT)/engine/animatable.cc \ $(SRC_ROOT)/engine/animator.cc \ $(SRC_ROOT)/engine/audio/audio_alsa.cc \ @@ -179,16 +174,35 @@ GLTEST_SRC := \ $(SRC_ROOT)/third_party/vulkan/loader/unknown_ext_chain.c \ $(SRC_ROOT)/third_party/vulkan/loader/wsi.c -GLTEST_EXE := $(call app_exe,gltest) -GLTEST_OBJS := $(call objs_from_src, $(GLTEST_SRC)) -EXES += $(GLTEST_EXE) -OBJS += $(GLTEST_OBJS) +ENGINE_LIB := $(BUILD_DIR)/libengine.a +ENGINE_OBJS := $(call objs_from_src, $(ENGINE_SRC)) +LIBS += $(ENGINE_LIB) +OBJS += $(ENGINE_OBJS) -$(GLTEST_EXE): $(GLTEST_OBJS) $(LIBS) +$(ENGINE_LIB): $(ENGINE_OBJS) + +# --- demo application --- + +ifneq ($(filter demo,$(APPS)),) + +DEMO_SRC := \ + $(SRC_ROOT)/demo/credits.cc \ + $(SRC_ROOT)/demo/demo.cc \ + $(SRC_ROOT)/demo/enemy.cc \ + $(SRC_ROOT)/demo/hud.cc \ + $(SRC_ROOT)/demo/menu.cc \ + $(SRC_ROOT)/demo/player.cc \ + $(SRC_ROOT)/demo/sky_quad.cc + +DEMO_EXE := $(call app_exe,demo) +DEMO_OBJS := $(call objs_from_src, $(DEMO_SRC)) +EXES += $(DEMO_EXE) +OBJS += $(DEMO_OBJS) + +$(DEMO_EXE): $(DEMO_OBJS) $(LIBS) endif - # --- Build rules --- # Dependencies. diff --git a/src/base/BUILD.gn b/src/base/BUILD.gn index c1bd97b..9534480 100644 --- a/src/base/BUILD.gn +++ b/src/base/BUILD.gn @@ -16,11 +16,11 @@ source_set("base") { "sinc_resampler.h", "task_runner.cc", "task_runner.h", + "thread_pool.cc", + "thread_pool.h", "timer.cc", "timer.h", "vecmath.h", - "worker.cc", - "worker.h", ] # ldflags = [] diff --git a/src/base/closure.h b/src/base/closure.h index ede8f55..c40c47b 100644 --- a/src/base/closure.h +++ b/src/base/closure.h @@ -1,5 +1,5 @@ -#ifndef CLOSURE_H -#define CLOSURE_H +#ifndef BASE_CLOSURE_H +#define BASE_CLOSURE_H #include #include @@ -56,4 +56,4 @@ std::function BindWeak(ReturnType (Class::*func)(Args...), } // namespace base -#endif // CLOSURE_H +#endif // BASE_CLOSURE_H diff --git a/src/base/collusion_test.cc b/src/base/collusion_test.cc index 7e5e4f6..7ca2b2f 100644 --- a/src/base/collusion_test.cc +++ b/src/base/collusion_test.cc @@ -1,4 +1,4 @@ -#include "collusion_test.h" +#include "base/collusion_test.h" #include #include diff --git a/src/base/collusion_test.h b/src/base/collusion_test.h index 3d9bcb4..c2a12e0 100644 --- a/src/base/collusion_test.h +++ b/src/base/collusion_test.h @@ -1,7 +1,7 @@ -#ifndef COLLUSION_TEST_H -#define COLLUSION_TEST_H +#ifndef BASE_COLLUSION_TEST_H +#define BASE_COLLUSION_TEST_H -#include "vecmath.h" +#include "base/vecmath.h" namespace base { @@ -20,4 +20,4 @@ bool Intersection(const Vector2f& center, } // namespace base -#endif // COLLUSION_TEST_H +#endif // BASE_COLLUSION_TEST_H diff --git a/src/base/concurrent_stack.h b/src/base/concurrent_stack.h index f244e3c..0386eac 100644 --- a/src/base/concurrent_stack.h +++ b/src/base/concurrent_stack.h @@ -1,5 +1,5 @@ -#ifndef CONCURRENT_STACK_H -#define CONCURRENT_STACK_H +#ifndef BASE_CONCURRENT_STACK_H +#define BASE_CONCURRENT_STACK_H #include #include @@ -88,4 +88,4 @@ class ConcurrentStack { } // namespace base -#endif // CONCURRENT_STACK_H +#endif // BASE_CONCURRENT_STACK_H diff --git a/src/base/file.h b/src/base/file.h index 042d940..3052ced 100644 --- a/src/base/file.h +++ b/src/base/file.h @@ -1,5 +1,5 @@ -#ifndef FILE_H -#define FILE_H +#ifndef BASE_FILE_H +#define BASE_FILE_H #include #include @@ -22,4 +22,4 @@ using ScopedFILE = std::unique_ptr; } // namespace base -#endif // FILE_H +#endif // BASE_FILE_H diff --git a/src/base/hash.h b/src/base/hash.h index 06b7020..0cd4432 100644 --- a/src/base/hash.h +++ b/src/base/hash.h @@ -1,21 +1,28 @@ -#ifndef HASH_H -#define HASH_H +#ifndef BASE_HASH_H +#define BASE_HASH_H #include - -#define HHASH(x) base::HornerHash(31, x) +#include namespace base { -// Compile time string hashing function. +// Compile-time string hashing function. template -constexpr inline size_t HornerHash(size_t prime, - const char (&str)[N], - size_t Len = N - 1) { - return (Len <= 1) ? str[0] - : (prime * HornerHash(prime, str, Len - 1) + str[Len - 1]); +constexpr inline size_t Hash(const char (&str)[N], size_t Len = N - 1) { + size_t hash_value = 0; + for (int i = 0; str[i] != '\0'; ++i) + hash_value = str[i] + 31 * hash_value; + return hash_value; +} + +// The same hashing function for run-time. +inline size_t Hash(const std::string& str) { + size_t hash_value = 0; + for (std::string::value_type c : str) + hash_value = c + 31 * hash_value; + return hash_value; } } // namespace base -#endif // HASH_H +#endif // BASE_HASH_H diff --git a/src/base/interpolation.h b/src/base/interpolation.h index bfe7f44..c40af47 100644 --- a/src/base/interpolation.h +++ b/src/base/interpolation.h @@ -1,5 +1,5 @@ -#ifndef INTERPOLATION_H -#define INTERPOLATION_H +#ifndef BASE_INTERPOLATION_H +#define BASE_INTERPOLATION_H namespace base { @@ -40,4 +40,4 @@ inline float Acceleration(float t, float w) { } // namespace base -#endif // INTERPOLATION_H +#endif // BASE_INTERPOLATION_H diff --git a/src/base/log.cc b/src/base/log.cc index 226b020..53f26e4 100644 --- a/src/base/log.cc +++ b/src/base/log.cc @@ -1,4 +1,4 @@ -#include "log.h" +#include "base/log.h" #if defined(__ANDROID__) #include diff --git a/src/base/log.h b/src/base/log.h index 2b1b974..e049d48 100644 --- a/src/base/log.h +++ b/src/base/log.h @@ -1,5 +1,5 @@ -#ifndef LOG_H -#define LOG_H +#ifndef BASE_LOG_H +#define BASE_LOG_H #include @@ -94,4 +94,4 @@ class LogAbort { } // namespace base -#endif // LOG_H +#endif // BASE_LOG_H diff --git a/src/base/mem.h b/src/base/mem.h index 3bfd1c2..698a3fb 100644 --- a/src/base/mem.h +++ b/src/base/mem.h @@ -1,5 +1,5 @@ -#ifndef MEM_H -#define MEM_H +#ifndef BASE_MEM_H +#define BASE_MEM_H #include #include @@ -8,7 +8,7 @@ #include #endif -#include "log.h" +#include "base/log.h" #define ALIGN_MEM(alignment) __attribute__((aligned(alignment))) @@ -53,4 +53,4 @@ inline bool IsAligned(void* ptr) { } // namespace base -#endif // MEM_H +#endif // BASE_MEM_H diff --git a/src/base/misc.h b/src/base/misc.h index 13fc0ef..e12d6ed 100644 --- a/src/base/misc.h +++ b/src/base/misc.h @@ -1,5 +1,5 @@ -#ifndef MISC_H -#define MISC_H +#ifndef BASE_MISC_H +#define BASE_MISC_H #define CRASH *((int*)nullptr) = 0; @@ -31,4 +31,4 @@ inline int RoundUpToPow2(int val) { } // namespace base -#endif // MISC_H +#endif // BASE_MISC_H diff --git a/src/base/random.cc b/src/base/random.cc index ac0a90e..c1ce262 100644 --- a/src/base/random.cc +++ b/src/base/random.cc @@ -1,9 +1,9 @@ -#include "random.h" +#include "base/random.h" #include -#include "interpolation.h" -#include "log.h" +#include "base/interpolation.h" +#include "base/log.h" namespace base { diff --git a/src/base/random.h b/src/base/random.h index 13a4bef..9765987 100644 --- a/src/base/random.h +++ b/src/base/random.h @@ -1,5 +1,5 @@ -#ifndef RANDOM_GENERATOR_H -#define RANDOM_GENERATOR_H +#ifndef BASE_RANDOM_H +#define BASE_RANDOM_H #include @@ -29,4 +29,4 @@ class Random { } // namespace base -#endif // RANDOM_GENERATOR_H +#endif // BASE_RANDOM_H diff --git a/src/base/semaphore.h b/src/base/semaphore.h index 586ee55..faf875d 100644 --- a/src/base/semaphore.h +++ b/src/base/semaphore.h @@ -1,10 +1,10 @@ -#ifndef SEMAPHORE_H -#define SEMAPHORE_H +#ifndef BASE_SEMAPHORE_H +#define BASE_SEMAPHORE_H #include #include -#include "../base/log.h" +#include "base/log.h" namespace base { @@ -38,4 +38,4 @@ class Semaphore { } // namespace base -#endif // SEMAPHORE_H +#endif // BASE_SEMAPHORE_H diff --git a/src/base/sinc_resampler.cc b/src/base/sinc_resampler.cc index bde1991..1f2985b 100644 --- a/src/base/sinc_resampler.cc +++ b/src/base/sinc_resampler.cc @@ -73,13 +73,13 @@ // Note: we're glossing over how the sub-sample handling works with // |virtual_source_idx_|, etc. -#include "sinc_resampler.h" +#include "base/sinc_resampler.h" #include #include #include -#include "log.h" +#include "base/log.h" #if defined(_M_X64) || defined(__x86_64__) || defined(__i386__) #include diff --git a/src/base/sinc_resampler.h b/src/base/sinc_resampler.h index b6102e1..da7f1a9 100644 --- a/src/base/sinc_resampler.h +++ b/src/base/sinc_resampler.h @@ -2,13 +2,13 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef SINC_RESAMPLER_H_ -#define SINC_RESAMPLER_H_ +#ifndef BASE_SINC_RESAMPLER_H +#define BASE_SINC_RESAMPLER_H #include #include -#include "mem.h" +#include "base/mem.h" namespace base { @@ -151,4 +151,4 @@ class SincResampler { } // namespace base -#endif // SINC_RESAMPLER_H_ +#endif // BASE_SINC_RESAMPLER_H diff --git a/src/base/spinlock.h b/src/base/spinlock.h index c748b1d..d4f3399 100644 --- a/src/base/spinlock.h +++ b/src/base/spinlock.h @@ -1,5 +1,5 @@ -#ifndef SPINLOCK_H -#define SPINLOCK_H +#ifndef BASE_SPINLOCK_H +#define BASE_SPINLOCK_H #include @@ -39,4 +39,4 @@ class Spinlock { } // namespace base -#endif // SPINLOCK_H +#endif // BASE_SPINLOCK_H diff --git a/src/base/task_runner.cc b/src/base/task_runner.cc index b774bc3..d6f0d19 100644 --- a/src/base/task_runner.cc +++ b/src/base/task_runner.cc @@ -1,6 +1,6 @@ -#include "task_runner.h" +#include "base/task_runner.h" -#include "log.h" +#include "base/log.h" namespace { diff --git a/src/base/task_runner.h b/src/base/task_runner.h index 581c008..6983a4a 100644 --- a/src/base/task_runner.h +++ b/src/base/task_runner.h @@ -1,5 +1,5 @@ -#ifndef TASK_RUNNER_H -#define TASK_RUNNER_H +#ifndef BASE_TASK_RUNNER_H +#define BASE_TASK_RUNNER_H #include #include @@ -8,7 +8,7 @@ #include #include -#include "closure.h" +#include "base/closure.h" namespace base { @@ -85,4 +85,4 @@ class TaskRunner { } // namespace base -#endif // TASK_RUNNER_H +#endif // BASE_TASK_RUNNER_H diff --git a/src/base/worker.cc b/src/base/thread_pool.cc similarity index 64% rename from src/base/worker.cc rename to src/base/thread_pool.cc index 910647f..a3cef9d 100644 --- a/src/base/worker.cc +++ b/src/base/thread_pool.cc @@ -1,22 +1,22 @@ -#include "worker.h" +#include "base/thread_pool.h" -#include "log.h" +#include "base/log.h" namespace base { -Worker* Worker::singleton = nullptr; +ThreadPool* ThreadPool::singleton = nullptr; -Worker::Worker() { +ThreadPool::ThreadPool() { DCHECK(!singleton); singleton = this; } -Worker::~Worker() { +ThreadPool::~ThreadPool() { Shutdown(); singleton = nullptr; } -void Worker::Initialize(unsigned max_concurrency) { +void ThreadPool::Initialize(unsigned max_concurrency) { if (max_concurrency > std::thread::hardware_concurrency() || max_concurrency == 0) { max_concurrency = std::thread::hardware_concurrency(); @@ -25,10 +25,10 @@ void Worker::Initialize(unsigned max_concurrency) { } while (max_concurrency--) - threads_.emplace_back(&Worker::WorkerMain, this); + threads_.emplace_back(&ThreadPool::WorkerMain, this); } -void Worker::Shutdown() { +void ThreadPool::Shutdown() { if (threads_.empty()) return; @@ -40,23 +40,23 @@ void Worker::Shutdown() { threads_.clear(); } -void Worker::PostTask(const Location& from, Closure task) { +void ThreadPool::PostTask(const Location& from, Closure task) { DCHECK((!threads_.empty())); task_runner_.PostTask(from, std::move(task)); semaphore_.Release(); } -void Worker::PostTaskAndReply(const Location& from, - Closure task, - Closure reply) { +void ThreadPool::PostTaskAndReply(const Location& from, + Closure task, + Closure reply) { DCHECK((!threads_.empty())); task_runner_.PostTaskAndReply(from, std::move(task), std::move(reply)); semaphore_.Release(); } -void Worker::WorkerMain() { +void ThreadPool::WorkerMain() { for (;;) { semaphore_.Acquire(); diff --git a/src/base/worker.h b/src/base/thread_pool.h similarity index 66% rename from src/base/worker.h rename to src/base/thread_pool.h index 97761b3..bdd8f79 100644 --- a/src/base/worker.h +++ b/src/base/thread_pool.h @@ -1,26 +1,26 @@ -#ifndef THREAD_POOL_H -#define THREAD_POOL_H +#ifndef BASE_THREAD_POOL_H +#define BASE_THREAD_POOL_H #include #include #include -#include "closure.h" -#include "semaphore.h" -#include "task_runner.h" +#include "base/closure.h" +#include "base/semaphore.h" +#include "base/task_runner.h" namespace base { class TaskRunner; -// Feed the worker tasks (in the form of Closure objects) and they will be +// Feed the ThreadPool tasks (in the form of Closure objects) and they will be // called on any thread from the pool. -class Worker { +class ThreadPool { public: - Worker(); - ~Worker(); + ThreadPool(); + ~ThreadPool(); - static Worker& Get() { return *singleton; } + static ThreadPool& Get() { return *singleton; } void Initialize(unsigned max_concurrency = 0); @@ -47,14 +47,14 @@ class Worker { base::TaskRunner task_runner_; - static Worker* singleton; + static ThreadPool* singleton; void WorkerMain(); - Worker(Worker const&) = delete; - Worker& operator=(Worker const&) = delete; + ThreadPool(ThreadPool const&) = delete; + ThreadPool& operator=(ThreadPool const&) = delete; }; } // namespace base -#endif // THREAD_POOL_H +#endif // BASE_THREAD_POOL_H diff --git a/src/base/timer.cc b/src/base/timer.cc index 90fc86b..059e271 100644 --- a/src/base/timer.cc +++ b/src/base/timer.cc @@ -1,4 +1,4 @@ -#include "timer.h" +#include "base/timer.h" #include diff --git a/src/base/timer.h b/src/base/timer.h index 569e8ff..b1a651f 100644 --- a/src/base/timer.h +++ b/src/base/timer.h @@ -1,5 +1,5 @@ -#ifndef TIMER_H -#define TIMER_H +#ifndef BASE_TIMER_H +#define BASE_TIMER_H #include @@ -28,4 +28,4 @@ class Timer { } // namespace base -#endif // TIMER_H +#endif // BASE_TIMER_H diff --git a/src/base/vecmath.h b/src/base/vecmath.h index 6326dad..0bcb75e 100644 --- a/src/base/vecmath.h +++ b/src/base/vecmath.h @@ -1,12 +1,12 @@ -#ifndef VEC_MATH_H -#define VEC_MATH_H +#ifndef BASE_VEC_MATH_H +#define BASE_VEC_MATH_H #include #include #include -#include "interpolation.h" -#include "log.h" +#include "base/interpolation.h" +#include "base/log.h" // // Miscellaneous helper macros. @@ -1846,4 +1846,4 @@ using Quatf = Quaternion; } // namespace base -#endif // VEC_MATH_H +#endif // BASE_VEC_MATH_H diff --git a/src/demo/credits.cc b/src/demo/credits.cc index deb6b5d..898903a 100644 --- a/src/demo/credits.cc +++ b/src/demo/credits.cc @@ -1,12 +1,12 @@ -#include "credits.h" +#include "demo/credits.h" -#include "../base/log.h" -#include "../base/vecmath.h" -#include "../engine/engine.h" -#include "../engine/font.h" -#include "../engine/image.h" -#include "../engine/input_event.h" -#include "demo.h" +#include "base/log.h" +#include "base/vecmath.h" +#include "demo/demo.h" +#include "engine/engine.h" +#include "engine/font.h" +#include "engine/image.h" +#include "engine/input_event.h" using namespace base; using namespace eng; diff --git a/src/demo/credits.h b/src/demo/credits.h index d0fb7a3..975535c 100644 --- a/src/demo/credits.h +++ b/src/demo/credits.h @@ -1,11 +1,11 @@ -#ifndef CREDITS_H -#define CREDITS_H +#ifndef DEMO_CREDITS_H +#define DEMO_CREDITS_H #include #include -#include "../engine/animator.h" -#include "../engine/image_quad.h" +#include "engine/animator.h" +#include "engine/image_quad.h" namespace eng { class Image; @@ -35,4 +35,4 @@ class Credits { std::unique_ptr CreateImage(); }; -#endif // CREDITS_H +#endif // DEMO_CREDITS_H diff --git a/src/demo/damage_type.h b/src/demo/damage_type.h index aa7f6b7..e9c06e5 100644 --- a/src/demo/damage_type.h +++ b/src/demo/damage_type.h @@ -1,5 +1,5 @@ -#ifndef DAMAGE_TYPE_H -#define DAMAGE_TYPE_H +#ifndef DEMO_DAMAGE_TYPE_H +#define DEMO_DAMAGE_TYPE_H enum DamageType { kDamageType_Invalid = -1, @@ -30,4 +30,4 @@ enum SpeedType { kSpeedType_Max }; -#endif // DAMAGE_TYPE_H +#endif // DEMO_DAMAGE_TYPE_H diff --git a/src/demo/demo.cc b/src/demo/demo.cc index e90299f..92cf826 100644 --- a/src/demo/demo.cc +++ b/src/demo/demo.cc @@ -1,19 +1,19 @@ -#include "demo.h" +#include "demo/demo.h" #include #include #include #include -#include "../base/file.h" -#include "../base/interpolation.h" -#include "../base/log.h" -#include "../base/random.h" -#include "../base/timer.h" -#include "../engine/engine.h" -#include "../engine/game_factory.h" -#include "../engine/input_event.h" -#include "../engine/sound.h" +#include "base/file.h" +#include "base/interpolation.h" +#include "base/log.h" +#include "base/random.h" +#include "base/timer.h" +#include "engine/engine.h" +#include "engine/game_factory.h" +#include "engine/input_event.h" +#include "engine/sound.h" DECLARE_GAME_BEGIN DECLARE_GAME(Demo) diff --git a/src/demo/demo.h b/src/demo/demo.h index 651e0dd..89962e3 100644 --- a/src/demo/demo.h +++ b/src/demo/demo.h @@ -1,19 +1,20 @@ -#ifndef DEMO_H -#define DEMO_H +#ifndef DEMO_DEMO_H +#define DEMO_DEMO_H -#include "../base/closure.h" -#include "../engine/animator.h" -#include "../engine/font.h" -#include "../engine/game.h" -#include "../engine/persistent_data.h" -#include "../engine/solid_quad.h" -#include "../engine/sound_player.h" -#include "credits.h" -#include "enemy.h" -#include "hud.h" -#include "menu.h" -#include "player.h" -#include "sky_quad.h" +#include "base/closure.h" +#include "engine/animator.h" +#include "engine/font.h" +#include "engine/game.h" +#include "engine/persistent_data.h" +#include "engine/solid_quad.h" +#include "engine/sound_player.h" + +#include "demo/credits.h" +#include "demo/enemy.h" +#include "demo/hud.h" +#include "demo/menu.h" +#include "demo/player.h" +#include "demo/sky_quad.h" // #define LOAD_TEST @@ -127,4 +128,4 @@ class Demo : public eng::Game { void BenchmarkResult(int avarage_fps); }; -#endif // DEMO_H +#endif // DEMO_DEMO_H diff --git a/src/demo/enemy.cc b/src/demo/enemy.cc index 0d9d8a8..bfcc395 100644 --- a/src/demo/enemy.cc +++ b/src/demo/enemy.cc @@ -1,4 +1,4 @@ -#include "enemy.h" +#include "demo/enemy.h" #include #include @@ -6,17 +6,18 @@ #include #include -#include "../base/collusion_test.h" -#include "../base/interpolation.h" -#include "../base/log.h" -#include "../engine/engine.h" -#include "../engine/font.h" -#include "../engine/image.h" -#include "../engine/renderer/geometry.h" -#include "../engine/renderer/shader.h" -#include "../engine/shader_source.h" -#include "../engine/sound.h" -#include "demo.h" +#include "base/collusion_test.h" +#include "base/interpolation.h" +#include "base/log.h" +#include "engine/engine.h" +#include "engine/font.h" +#include "engine/image.h" +#include "engine/renderer/geometry.h" +#include "engine/renderer/shader.h" +#include "engine/shader_source.h" +#include "engine/sound.h" + +#include "demo/demo.h" using namespace std::string_literals; diff --git a/src/demo/enemy.h b/src/demo/enemy.h index 95e8742..d2bd47d 100644 --- a/src/demo/enemy.h +++ b/src/demo/enemy.h @@ -1,16 +1,17 @@ -#ifndef ENEMY_H -#define ENEMY_H +#ifndef DEMO_ENEMY_H +#define DEMO_ENEMY_H #include #include #include -#include "../base/vecmath.h" -#include "../engine/animator.h" -#include "../engine/image_quad.h" -#include "../engine/solid_quad.h" -#include "../engine/sound_player.h" -#include "damage_type.h" +#include "base/vecmath.h" +#include "engine/animator.h" +#include "engine/image_quad.h" +#include "engine/solid_quad.h" +#include "engine/sound_player.h" + +#include "demo/damage_type.h" namespace eng { class Image; @@ -173,4 +174,4 @@ class Enemy { void TranslateEnemyUnit(EnemyUnit& e, const base::Vector2f& delta); }; -#endif // ENEMY_H +#endif // DEMO_ENEMY_H diff --git a/src/demo/hud.cc b/src/demo/hud.cc index 1d8e16a..47f75d4 100644 --- a/src/demo/hud.cc +++ b/src/demo/hud.cc @@ -1,12 +1,13 @@ -#include "hud.h" +#include "demo/hud.h" -#include "../base/interpolation.h" -#include "../base/log.h" -#include "../base/vecmath.h" -#include "../engine/engine.h" -#include "../engine/font.h" -#include "../engine/image.h" -#include "demo.h" +#include "base/interpolation.h" +#include "base/log.h" +#include "base/vecmath.h" +#include "engine/engine.h" +#include "engine/font.h" +#include "engine/image.h" + +#include "demo/demo.h" using namespace std::string_literals; diff --git a/src/demo/hud.h b/src/demo/hud.h index 50269d3..55d1785 100644 --- a/src/demo/hud.h +++ b/src/demo/hud.h @@ -1,13 +1,13 @@ -#ifndef HUD_H -#define HUD_H +#ifndef DEMO_HUD_H +#define DEMO_HUD_H #include #include -#include "../base/closure.h" -#include "../engine/animator.h" -#include "../engine/image_quad.h" -#include "../engine/solid_quad.h" +#include "base/closure.h" +#include "engine/animator.h" +#include "engine/image_quad.h" +#include "engine/solid_quad.h" namespace eng { class Image; @@ -66,4 +66,4 @@ class Hud { std::unique_ptr CreateImage(); }; -#endif // HUD_H +#endif // DEMO_HUD_H diff --git a/src/demo/menu.cc b/src/demo/menu.cc index ae564c5..8eaa4e1 100644 --- a/src/demo/menu.cc +++ b/src/demo/menu.cc @@ -1,18 +1,19 @@ -#include "menu.h" +#include "demo/menu.h" #include #include #include -#include "../base/collusion_test.h" -#include "../base/interpolation.h" -#include "../base/log.h" -#include "../engine/engine.h" -#include "../engine/font.h" -#include "../engine/image.h" -#include "../engine/input_event.h" -#include "../engine/sound.h" -#include "demo.h" +#include "base/collusion_test.h" +#include "base/interpolation.h" +#include "base/log.h" +#include "engine/engine.h" +#include "engine/font.h" +#include "engine/image.h" +#include "engine/input_event.h" +#include "engine/sound.h" + +#include "demo/demo.h" using namespace std::string_literals; diff --git a/src/demo/menu.h b/src/demo/menu.h index 60cefa6..14b7fa4 100644 --- a/src/demo/menu.h +++ b/src/demo/menu.h @@ -1,14 +1,14 @@ -#ifndef MENU_H -#define MENU_H +#ifndef DEMO_MENU_H +#define DEMO_MENU_H #include #include -#include "../base/closure.h" -#include "../base/vecmath.h" -#include "../engine/animator.h" -#include "../engine/image_quad.h" -#include "../engine/sound_player.h" +#include "base/closure.h" +#include "base/vecmath.h" +#include "engine/animator.h" +#include "engine/image_quad.h" +#include "engine/sound_player.h" namespace eng { class Image; @@ -149,4 +149,4 @@ class Menu { bool IsAnimating(); }; -#endif // MENU_H +#endif // DEMO_MENU_H diff --git a/src/demo/player.cc b/src/demo/player.cc index c194d60..fa82fa4 100644 --- a/src/demo/player.cc +++ b/src/demo/player.cc @@ -1,12 +1,13 @@ -#include "player.h" +#include "demo/player.h" -#include "../base/interpolation.h" -#include "../base/log.h" -#include "../engine/engine.h" -#include "../engine/font.h" -#include "../engine/input_event.h" -#include "../engine/sound.h" -#include "demo.h" +#include "base/interpolation.h" +#include "base/log.h" +#include "engine/engine.h" +#include "engine/font.h" +#include "engine/input_event.h" +#include "engine/sound.h" + +#include "demo/demo.h" using namespace base; using namespace eng; diff --git a/src/demo/player.h b/src/demo/player.h index 1c8adaa..d29a223 100644 --- a/src/demo/player.h +++ b/src/demo/player.h @@ -1,14 +1,15 @@ -#ifndef PLAYER_H -#define PLAYER_H +#ifndef DEMO_PLAYER_H +#define DEMO_PLAYER_H #include -#include "../base/vecmath.h" -#include "../engine/animator.h" -#include "../engine/image_quad.h" -#include "../engine/solid_quad.h" -#include "../engine/sound_player.h" -#include "damage_type.h" +#include "base/vecmath.h" +#include "engine/animator.h" +#include "engine/image_quad.h" +#include "engine/solid_quad.h" +#include "engine/sound_player.h" + +#include "demo/damage_type.h" namespace eng { class InputEvent; @@ -104,4 +105,4 @@ class Player { bool CreateRenderResources(); }; -#endif // PLAYER_H +#endif // DEMO_PLAYER_H diff --git a/src/demo/sky_quad.cc b/src/demo/sky_quad.cc index 30e83e8..6801f37 100644 --- a/src/demo/sky_quad.cc +++ b/src/demo/sky_quad.cc @@ -1,12 +1,12 @@ -#include "sky_quad.h" +#include "demo/sky_quad.h" -#include "../base/interpolation.h" -#include "../base/log.h" -#include "../base/random.h" -#include "../engine/engine.h" -#include "../engine/renderer/geometry.h" -#include "../engine/renderer/shader.h" -#include "../engine/shader_source.h" +#include "base/interpolation.h" +#include "base/log.h" +#include "base/random.h" +#include "engine/engine.h" +#include "engine/renderer/geometry.h" +#include "engine/renderer/shader.h" +#include "engine/shader_source.h" using namespace base; using namespace eng; diff --git a/src/demo/sky_quad.h b/src/demo/sky_quad.h index a9ac0a9..4775669 100644 --- a/src/demo/sky_quad.h +++ b/src/demo/sky_quad.h @@ -1,9 +1,9 @@ -#ifndef SKY_QUAD_H -#define SKY_QUAD_H +#ifndef DEMO_SKY_QUAD_H +#define DEMO_SKY_QUAD_H -#include "../base/vecmath.h" -#include "../engine/animatable.h" -#include "../engine/animator.h" +#include "base/vecmath.h" +#include "engine/animatable.h" +#include "engine/animator.h" #include #include @@ -61,4 +61,4 @@ class SkyQuad : public eng::Animatable { bool CreateShaders(); }; -#endif // SKY_QUAD_H +#endif // DEMO_SKY_QUAD_H diff --git a/src/engine/animatable.cc b/src/engine/animatable.cc index c2f5018..eac17db 100644 --- a/src/engine/animatable.cc +++ b/src/engine/animatable.cc @@ -1,4 +1,4 @@ -#include "animatable.h" +#include "engine/animatable.h" #include diff --git a/src/engine/animatable.h b/src/engine/animatable.h index 429941d..ef7762d 100644 --- a/src/engine/animatable.h +++ b/src/engine/animatable.h @@ -1,8 +1,8 @@ -#ifndef SHAPE_H -#define SHAPE_H +#ifndef ENGINE_SHAPE_H +#define ENGINE_SHAPE_H -#include "../base/vecmath.h" -#include "drawable.h" +#include "base/vecmath.h" +#include "engine/drawable.h" namespace eng { @@ -59,4 +59,4 @@ class Animatable : public Drawable { } // namespace eng -#endif // SHAPE_H +#endif // ENGINE_SHAPE_H diff --git a/src/engine/animator.cc b/src/engine/animator.cc index 7be536f..aba6607 100644 --- a/src/engine/animator.cc +++ b/src/engine/animator.cc @@ -1,9 +1,9 @@ #include "animator.h" -#include "../base/interpolation.h" -#include "../base/log.h" -#include "animatable.h" -#include "engine.h" +#include "base/interpolation.h" +#include "base/log.h" +#include "engine/animatable.h" +#include "engine/engine.h" using namespace base; diff --git a/src/engine/animator.h b/src/engine/animator.h index 198d57c..ce02922 100644 --- a/src/engine/animator.h +++ b/src/engine/animator.h @@ -1,10 +1,10 @@ -#ifndef ANIMATOR_H -#define ANIMATOR_H +#ifndef ENGINE_ANIMATOR_H +#define ENGINE_ANIMATOR_H #include -#include "../base/closure.h" -#include "../base/vecmath.h" +#include "base/closure.h" +#include "base/vecmath.h" namespace eng { @@ -129,4 +129,4 @@ class Animator { } // namespace eng -#endif // ANIMATOR_H +#endif // ENGINE_ANIMATOR_H diff --git a/src/engine/audio/audio.h b/src/engine/audio/audio.h index ee1989a..28535a2 100644 --- a/src/engine/audio/audio.h +++ b/src/engine/audio/audio.h @@ -1,10 +1,10 @@ -#ifndef AUDIO_H -#define AUDIO_H +#ifndef ENGINE_AUDIO_AUDIO_H +#define ENGINE_AUDIO_AUDIO_H #if defined(__ANDROID__) -#include "audio_oboe.h" +#include "engine/audio/audio_oboe.h" #elif defined(__linux__) -#include "audio_alsa.h" +#include "engine/audio/audio_alsa.h" #endif namespace eng { @@ -17,4 +17,4 @@ using Audio = AudioAlsa; } // namespace eng -#endif // AUDIO_H +#endif // ENGINE_AUDIO_AUDIO_H diff --git a/src/engine/audio/audio_alsa.cc b/src/engine/audio/audio_alsa.cc index 095e6b8..fdefd90 100644 --- a/src/engine/audio/audio_alsa.cc +++ b/src/engine/audio/audio_alsa.cc @@ -1,10 +1,10 @@ -#include "audio_alsa.h" - -#include +#include "engine/audio/audio_alsa.h" #include -#include "../../base/log.h" +#include + +#include "base/log.h" using namespace base; diff --git a/src/engine/audio/audio_alsa.h b/src/engine/audio/audio_alsa.h index dd37409..b69b4b0 100644 --- a/src/engine/audio/audio_alsa.h +++ b/src/engine/audio/audio_alsa.h @@ -1,10 +1,10 @@ -#ifndef AUDIO_ALSA_H -#define AUDIO_ALSA_H +#ifndef ENGINE_AUDIO_AUDIO_ALSA_H +#define ENGINE_AUDIO_AUDIO_ALSA_H #include #include -#include "audio_base.h" +#include "engine/audio/audio_base.h" typedef struct _snd_pcm snd_pcm_t; @@ -44,4 +44,4 @@ class AudioAlsa : public AudioBase { } // namespace eng -#endif // AUDIO_ALSA_H +#endif // ENGINE_AUDIO_AUDIO_ALSA_H diff --git a/src/engine/audio/audio_base.cc b/src/engine/audio/audio_base.cc index 57c258e..f694117 100644 --- a/src/engine/audio/audio_base.cc +++ b/src/engine/audio/audio_base.cc @@ -1,11 +1,11 @@ -#include "audio.h" +#include "engine/audio/audio.h" #include -#include "../../base/log.h" -#include "../../base/task_runner.h" -#include "../../base/worker.h" -#include "../sound.h" +#include "base/log.h" +#include "base/task_runner.h" +#include "base/thread_pool.h" +#include "engine/sound.h" using namespace base; @@ -16,13 +16,13 @@ AudioBase::AudioBase() AudioBase::~AudioBase() = default; -size_t AudioBase::CreateResource() { - size_t resource_id = ++last_resource_id_; +uint64_t AudioBase::CreateResource() { + uint64_t resource_id = ++last_resource_id_; resources_[resource_id] = std::make_shared(); return resource_id; } -void AudioBase::DestroyResource(size_t resource_id) { +void AudioBase::DestroyResource(uint64_t resource_id) { auto it = resources_.find(resource_id); if (it == resources_.end()) return; @@ -31,7 +31,7 @@ void AudioBase::DestroyResource(size_t resource_id) { resources_.erase(it); } -void AudioBase::Play(size_t resource_id, +void AudioBase::Play(uint64_t resource_id, std::shared_ptr sound, float amplitude, bool reset_pos) { @@ -75,7 +75,7 @@ void AudioBase::Play(size_t resource_id, play_list_[0].push_back(it->second); } -void AudioBase::Stop(size_t resource_id) { +void AudioBase::Stop(uint64_t resource_id) { auto it = resources_.find(resource_id); if (it == resources_.end()) return; @@ -84,7 +84,7 @@ void AudioBase::Stop(size_t resource_id) { it->second->flags.fetch_or(kStopped, std::memory_order_relaxed); } -void AudioBase::SetLoop(size_t resource_id, bool loop) { +void AudioBase::SetLoop(uint64_t resource_id, bool loop) { auto it = resources_.find(resource_id); if (it == resources_.end()) return; @@ -95,7 +95,7 @@ void AudioBase::SetLoop(size_t resource_id, bool loop) { it->second->flags.fetch_and(~kLoop, std::memory_order_relaxed); } -void AudioBase::SetSimulateStereo(size_t resource_id, bool simulate) { +void AudioBase::SetSimulateStereo(uint64_t resource_id, bool simulate) { auto it = resources_.find(resource_id); if (it == resources_.end()) return; @@ -106,7 +106,7 @@ void AudioBase::SetSimulateStereo(size_t resource_id, bool simulate) { it->second->flags.fetch_and(~kSimulateStereo, std::memory_order_relaxed); } -void AudioBase::SetResampleStep(size_t resource_id, size_t step) { +void AudioBase::SetResampleStep(uint64_t resource_id, size_t step) { auto it = resources_.find(resource_id); if (it == resources_.end()) return; @@ -114,7 +114,7 @@ void AudioBase::SetResampleStep(size_t resource_id, size_t step) { it->second->step.store(step + 100, std::memory_order_relaxed); } -void AudioBase::SetMaxAmplitude(size_t resource_id, float max_amplitude) { +void AudioBase::SetMaxAmplitude(uint64_t resource_id, float max_amplitude) { auto it = resources_.find(resource_id); if (it == resources_.end()) return; @@ -122,7 +122,7 @@ void AudioBase::SetMaxAmplitude(size_t resource_id, float max_amplitude) { it->second->max_amplitude.store(max_amplitude, std::memory_order_relaxed); } -void AudioBase::SetAmplitudeInc(size_t resource_id, float amplitude_inc) { +void AudioBase::SetAmplitudeInc(uint64_t resource_id, float amplitude_inc) { auto it = resources_.find(resource_id); if (it == resources_.end()) return; @@ -130,7 +130,7 @@ void AudioBase::SetAmplitudeInc(size_t resource_id, float amplitude_inc) { it->second->amplitude_inc.store(amplitude_inc, std::memory_order_relaxed); } -void AudioBase::SetEndCallback(size_t resource_id, base::Closure cb) { +void AudioBase::SetEndCallback(uint64_t resource_id, base::Closure cb) { auto it = resources_.find(resource_id); if (it == resources_.end()) return; @@ -236,8 +236,9 @@ void AudioBase::RenderAudio(float* output_buffer, size_t num_frames) { src[1] = src[0]; // mono. num_samples = sound->GetNumSamples(); - Worker::Get().PostTask(HERE, std::bind(&AudioBase::DoStream, this, - *it, flags & kLoop)); + ThreadPool::Get().PostTask( + HERE, + std::bind(&AudioBase::DoStream, this, *it, flags & kLoop)); } else if (num_samples) { DLOG << "Buffer underrun!"; src_index %= num_samples; diff --git a/src/engine/audio/audio_base.h b/src/engine/audio/audio_base.h index 1b6c6e0..d89e2fd 100644 --- a/src/engine/audio/audio_base.h +++ b/src/engine/audio/audio_base.h @@ -1,12 +1,12 @@ -#ifndef AUDIO_BASE_H -#define AUDIO_BASE_H +#ifndef ENGINE_AUDIO_AUDIO_BASE_H +#define ENGINE_AUDIO_AUDIO_BASE_H #include #include #include #include -#include "../../base/closure.h" +#include "base/closure.h" namespace base { class TaskRunner; @@ -21,21 +21,21 @@ class Sound; // thread. class AudioBase { public: - size_t CreateResource(); - void DestroyResource(size_t resource_id); + uint64_t CreateResource(); + void DestroyResource(uint64_t resource_id); - void Play(size_t resource_id, + void Play(uint64_t resource_id, std::shared_ptr sound, float amplitude, bool reset_pos); - void Stop(size_t resource_id); + void Stop(uint64_t resource_id); - void SetLoop(size_t resource_id, bool loop); - void SetSimulateStereo(size_t resource_id, bool simulate); - void SetResampleStep(size_t resource_id, size_t step); - void SetMaxAmplitude(size_t resource_id, float max_amplitude); - void SetAmplitudeInc(size_t resource_id, float amplitude_inc); - void SetEndCallback(size_t resource_id, base::Closure cb); + void SetLoop(uint64_t resource_id, bool loop); + void SetSimulateStereo(uint64_t resource_id, bool simulate); + void SetResampleStep(uint64_t resource_id, size_t step); + void SetMaxAmplitude(uint64_t resource_id, float max_amplitude); + void SetAmplitudeInc(uint64_t resource_id, float amplitude_inc); + void SetEndCallback(uint64_t resource_id, base::Closure cb); void SetEnableAudio(bool enable) { audio_enabled_ = enable; } @@ -71,8 +71,8 @@ class AudioBase { std::atomic streaming_in_progress{false}; }; - std::unordered_map> resources_; - size_t last_resource_id_ = 0; + std::unordered_map> resources_; + uint64_t last_resource_id_ = 0; std::list> play_list_[2]; std::mutex lock_; @@ -93,4 +93,4 @@ class AudioBase { } // namespace eng -#endif // AUDIO_BASE_H +#endif // ENGINE_AUDIO_AUDIO_BASE_H diff --git a/src/engine/audio/audio_forward.h b/src/engine/audio/audio_forward.h index d3ec438..59acf90 100644 --- a/src/engine/audio/audio_forward.h +++ b/src/engine/audio/audio_forward.h @@ -1,5 +1,5 @@ -#ifndef AUDIO_FORWARD_H -#define AUDIO_FORWARD_H +#ifndef ENGINE_AUDIO_AUDIO_FORWARD_H +#define ENGINE_AUDIO_AUDIO_FORWARD_H namespace eng { @@ -13,4 +13,4 @@ using Audio = AudioAlsa; } // namespace eng -#endif // AUDIO_FORWARD_H +#endif // ENGINE_AUDIO_AUDIO_FORWARD_H diff --git a/src/engine/audio/audio_oboe.cc b/src/engine/audio/audio_oboe.cc index 9e62f3d..d686215 100644 --- a/src/engine/audio/audio_oboe.cc +++ b/src/engine/audio/audio_oboe.cc @@ -1,7 +1,7 @@ -#include "audio_oboe.h" +#include "engine/audio/audio_oboe.h" -#include "../../base/log.h" -#include "../../third_party/oboe/include/oboe/Oboe.h" +#include "base/log.h" +#include "third_party/oboe/include/oboe/Oboe.h" using namespace base; diff --git a/src/engine/audio/audio_oboe.h b/src/engine/audio/audio_oboe.h index 7b76255..7b10b7f 100644 --- a/src/engine/audio/audio_oboe.h +++ b/src/engine/audio/audio_oboe.h @@ -1,11 +1,12 @@ -#ifndef AUDIO_OBOE_H -#define AUDIO_OBOE_H +#ifndef ENGINE_AUDIO_AUDIO_OBOE_H +#define ENGINE_AUDIO_AUDIO_OBOE_H #include -#include "../../third_party/oboe/include/oboe/AudioStream.h" -#include "../../third_party/oboe/include/oboe/AudioStreamCallback.h" -#include "audio_base.h" +#include "third_party/oboe/include/oboe/AudioStream.h" +#include "third_party/oboe/include/oboe/AudioStreamCallback.h" + +#include "engine/audio/audio_base.h" namespace eng { @@ -48,4 +49,4 @@ class AudioOboe : public AudioBase { } // namespace eng -#endif // AUDIO_OBOE_H +#endif // ENGINE_AUDIO_AUDIO_OBOE_H diff --git a/src/engine/drawable.cc b/src/engine/drawable.cc index 02eac41..7643606 100644 --- a/src/engine/drawable.cc +++ b/src/engine/drawable.cc @@ -1,5 +1,6 @@ -#include "drawable.h" -#include "engine.h" +#include "engine/drawable.h" + +#include "engine/engine.h" namespace eng { diff --git a/src/engine/drawable.h b/src/engine/drawable.h index 70def7b..6739f0a 100644 --- a/src/engine/drawable.h +++ b/src/engine/drawable.h @@ -1,7 +1,7 @@ -#ifndef DRAWABLE_H -#define DRAWABLE_H +#ifndef ENGINE_DRAWABLE_H +#define ENGINE_DRAWABLE_H -#include "../base/vecmath.h" +#include "base/vecmath.h" namespace eng { @@ -28,4 +28,4 @@ class Drawable { } // namespace eng -#endif // DRAWABLE_H +#endif // ENGINE_DRAWABLE_H diff --git a/src/engine/engine.cc b/src/engine/engine.cc index 72f41d7..fa421d0 100644 --- a/src/engine/engine.cc +++ b/src/engine/engine.cc @@ -1,23 +1,23 @@ -#include "engine.h" +#include "engine/engine.h" -#include "../base/log.h" -#include "../third_party/texture_compressor/texture_compressor.h" -#include "animator.h" -#include "audio/audio.h" -#include "drawable.h" -#include "font.h" -#include "game.h" -#include "game_factory.h" -#include "image.h" -#include "image_quad.h" -#include "input_event.h" -#include "mesh.h" -#include "platform/platform.h" -#include "renderer/geometry.h" -#include "renderer/renderer.h" -#include "renderer/shader.h" -#include "renderer/texture.h" -#include "shader_source.h" +#include "base/log.h" +#include "engine/animator.h" +#include "engine/audio/audio.h" +#include "engine/drawable.h" +#include "engine/font.h" +#include "engine/game.h" +#include "engine/game_factory.h" +#include "engine/image.h" +#include "engine/image_quad.h" +#include "engine/input_event.h" +#include "engine/mesh.h" +#include "engine/platform/platform.h" +#include "engine/renderer/geometry.h" +#include "engine/renderer/renderer.h" +#include "engine/renderer/shader.h" +#include "engine/renderer/texture.h" +#include "engine/shader_source.h" +#include "third_party/texture_compressor/texture_compressor.h" using namespace base; diff --git a/src/engine/engine.h b/src/engine/engine.h index a45b3e1..08091de 100644 --- a/src/engine/engine.h +++ b/src/engine/engine.h @@ -1,5 +1,5 @@ -#ifndef ENGINE_H -#define ENGINE_H +#ifndef ENGINE_ENGINE_H +#define ENGINE_ENGINE_H #include #include @@ -7,10 +7,10 @@ #include #include -#include "../base/random.h" -#include "../base/vecmath.h" -#include "audio/audio_forward.h" -#include "persistent_data.h" +#include "base/random.h" +#include "base/vecmath.h" +#include "engine/audio/audio_forward.h" +#include "engine/persistent_data.h" class TextureCompressor; @@ -221,4 +221,4 @@ class Engine { } // namespace eng -#endif // ENGINE_H +#endif // ENGINE_ENGINE_H diff --git a/src/engine/font.cc b/src/engine/font.cc index 4e633ee..e33b53d 100644 --- a/src/engine/font.cc +++ b/src/engine/font.cc @@ -1,11 +1,11 @@ -#include "font.h" +#include "engine/font.h" #include #include -#include "../base/log.h" -#include "engine.h" -#include "platform/asset_file.h" +#include "base/log.h" +#include "engine/engine.h" +#include "engine/platform/asset_file.h" #define STB_TRUETYPE_IMPLEMENTATION #include "../third_party/stb/stb_truetype.h" @@ -126,7 +126,7 @@ void Font::CalculateBoundingBox(const std::string& text, float x = 0, y = 0; - std::wstring_convert,char16_t> convert; + std::wstring_convert, char16_t> convert; std::u16string u16text = convert.from_bytes(text); const char16_t* ptr = u16text.c_str(); @@ -173,7 +173,7 @@ void Font::Print(int x, float fx = (float)x, fy = (float)y + (float)yoff_; - std::wstring_convert,char16_t> convert; + std::wstring_convert, char16_t> convert; std::u16string u16text = convert.from_bytes(text); const char16_t* ptr = u16text.c_str(); diff --git a/src/engine/font.h b/src/engine/font.h index c66afed..f6f49e8 100644 --- a/src/engine/font.h +++ b/src/engine/font.h @@ -1,11 +1,11 @@ -#ifndef FONT_H -#define FONT_H +#ifndef ENGINE_FONT_H +#define ENGINE_FONT_H #include #include #include -#include "../third_party/stb/stb_truetype.h" +#include "third_party/stb/stb_truetype.h" namespace eng { @@ -51,4 +51,4 @@ class Font { } // namespace eng -#endif // FONT_H +#endif // ENGINE_FONT_H diff --git a/src/engine/game.h b/src/engine/game.h index c6d0b19..54429a7 100644 --- a/src/engine/game.h +++ b/src/engine/game.h @@ -1,5 +1,5 @@ -#ifndef GAME_H -#define GAME_H +#ifndef ENGINE_GAME_H +#define ENGINE_GAME_H namespace eng { @@ -25,4 +25,4 @@ class Game { } // namespace eng -#endif // GAME_H +#endif // ENGINE_GAME_H diff --git a/src/engine/game_factory.h b/src/engine/game_factory.h index e982621..7060c65 100644 --- a/src/engine/game_factory.h +++ b/src/engine/game_factory.h @@ -1,5 +1,5 @@ -#ifndef GAME_FACTORY_H -#define GAME_FACTORY_H +#ifndef ENGINE_GAME_FACTORY_H +#define ENGINE_GAME_FACTORY_H #include #include @@ -52,4 +52,4 @@ class GameFactory : public GameFactoryBase { } // namespace eng -#endif // GAME_FACTORY_H +#endif // ENGINE_GAME_FACTORY_H diff --git a/src/engine/image.cc b/src/engine/image.cc index 7912057..069c2ee 100644 --- a/src/engine/image.cc +++ b/src/engine/image.cc @@ -1,14 +1,14 @@ -#include "image.h" +#include "engine/image.h" #include #include -#include "../base/interpolation.h" -#include "../base/log.h" -#include "../base/misc.h" -#include "../third_party/texture_compressor/texture_compressor.h" -#include "engine.h" -#include "platform/asset_file.h" +#include "base/interpolation.h" +#include "base/log.h" +#include "base/misc.h" +#include "third_party/texture_compressor/texture_compressor.h" +#include "engine/engine.h" +#include "engine/platform/asset_file.h" // This 3rd party library is written in C and uses malloc, which means that we // have to do the same. diff --git a/src/engine/image.h b/src/engine/image.h index 3eb7f0d..d9f1b21 100644 --- a/src/engine/image.h +++ b/src/engine/image.h @@ -1,11 +1,11 @@ -#ifndef IMAGE_H -#define IMAGE_H +#ifndef ENGINE_IMAGE_H +#define ENGINE_IMAGE_H #include #include -#include "../base/mem.h" -#include "../base/vecmath.h" +#include "base/mem.h" +#include "base/vecmath.h" namespace eng { @@ -56,4 +56,4 @@ class Image { } // namespace eng -#endif // IMAGE_H +#endif // ENGINE_IMAGE_H diff --git a/src/engine/image_quad.cc b/src/engine/image_quad.cc index 760f2b7..d8a7d1c 100644 --- a/src/engine/image_quad.cc +++ b/src/engine/image_quad.cc @@ -1,10 +1,10 @@ -#include "image_quad.h" +#include "engine/image_quad.h" -#include "../base/log.h" -#include "engine.h" -#include "renderer/geometry.h" -#include "renderer/shader.h" -#include "renderer/texture.h" +#include "base/log.h" +#include "engine/engine.h" +#include "engine/renderer/geometry.h" +#include "engine/renderer/shader.h" +#include "engine/renderer/texture.h" using namespace base; diff --git a/src/engine/image_quad.h b/src/engine/image_quad.h index bc4a879..1ef4960 100644 --- a/src/engine/image_quad.h +++ b/src/engine/image_quad.h @@ -1,8 +1,5 @@ -#ifndef IMAGE_QUAD_H -#define IMAGE_QUAD_H - -#include "../base/vecmath.h" -#include "animatable.h" +#ifndef ENGINE_IMAGE_QUAD_H +#define ENGINE_IMAGE_QUAD_H #include #include @@ -10,6 +7,9 @@ #include #include +#include "base/vecmath.h" +#include "engine/animatable.h" + namespace eng { class Shader; @@ -76,4 +76,4 @@ class ImageQuad : public Animatable { } // namespace eng -#endif // IMAGE_QUAD_H +#endif // ENGINE_IMAGE_QUAD_H diff --git a/src/engine/input_event.h b/src/engine/input_event.h index 0a76caa..e99fa33 100644 --- a/src/engine/input_event.h +++ b/src/engine/input_event.h @@ -1,8 +1,8 @@ -#ifndef INPUT_EVENT_H -#define INPUT_EVENT_H +#ifndef ENGINE_INPUT_EVENT_H +#define ENGINE_INPUT_EVENT_H -#include "../base/log.h" -#include "../base/vecmath.h" +#include "base/log.h" +#include "base/vecmath.h" namespace eng { @@ -44,4 +44,4 @@ class InputEvent { } // namespace eng -#endif // INPUT_EVENT_H +#endif // ENGINE_INPUT_EVENT_H diff --git a/src/engine/mesh.cc b/src/engine/mesh.cc index 570c7ed..270bac5 100644 --- a/src/engine/mesh.cc +++ b/src/engine/mesh.cc @@ -1,11 +1,11 @@ -#include "mesh.h" +#include "engine/mesh.h" #include -#include "../base/log.h" -#include "../third_party/jsoncpp/json.h" -#include "engine.h" -#include "platform/asset_file.h" +#include "base/log.h" +#include "third_party/jsoncpp/json.h" +#include "engine/engine.h" +#include "engine/platform/asset_file.h" namespace eng { diff --git a/src/engine/mesh.h b/src/engine/mesh.h index 1f866f2..11ddefc 100644 --- a/src/engine/mesh.h +++ b/src/engine/mesh.h @@ -1,9 +1,10 @@ -#ifndef MESH_H -#define MESH_H +#ifndef ENGINE_MESH_H +#define ENGINE_MESH_H #include #include -#include "renderer/renderer_types.h" + +#include "engine/renderer/renderer_types.h" namespace eng { @@ -50,4 +51,4 @@ class Mesh { } // namespace eng -#endif // MESH_H +#endif // ENGINE_MESH_H diff --git a/src/engine/persistent_data.cc b/src/engine/persistent_data.cc index 9ff3293..6a527ef 100644 --- a/src/engine/persistent_data.cc +++ b/src/engine/persistent_data.cc @@ -1,10 +1,10 @@ -#include "persistent_data.h" +#include "engine/persistent_data.h" #include -#include "../base/file.h" -#include "engine.h" -#include "platform/asset_file.h" +#include "base/file.h" +#include "engine/engine.h" +#include "engine/platform/asset_file.h" using namespace base; diff --git a/src/engine/persistent_data.h b/src/engine/persistent_data.h index adfdde9..7cb2d18 100644 --- a/src/engine/persistent_data.h +++ b/src/engine/persistent_data.h @@ -1,10 +1,10 @@ -#ifndef SAVE_GAME_H -#define SAVE_GAME_H +#ifndef ENGINE_SAVE_GAME_H +#define ENGINE_SAVE_GAME_H #include -#include "../base/log.h" -#include "../third_party/jsoncpp/json.h" +#include "base/log.h" +#include "third_party/jsoncpp/json.h" namespace eng { @@ -37,4 +37,4 @@ class PersistentData { } // namespace eng -#endif // SAVE_GAME_H +#endif // ENGINE_SAVE_GAME_H diff --git a/src/engine/platform/asset_file.cc b/src/engine/platform/asset_file.cc index b88f5d3..d4ec1d7 100644 --- a/src/engine/platform/asset_file.cc +++ b/src/engine/platform/asset_file.cc @@ -1,5 +1,6 @@ -#include "asset_file.h" -#include "../../base/log.h" +#include "engine/platform/asset_file.h" + +#include "base/log.h" namespace eng { diff --git a/src/engine/platform/asset_file.h b/src/engine/platform/asset_file.h index a65a4f2..3f846ac 100644 --- a/src/engine/platform/asset_file.h +++ b/src/engine/platform/asset_file.h @@ -1,14 +1,15 @@ -#ifndef ASSET_FILE_H -#define ASSET_FILE_H +#ifndef ENGINE_PLATFORM_ASSET_FILE_H +#define ENGINE_PLATFORM_ASSET_FILE_H + +#include +#include #if defined(__ANDROID__) #include -#include "../../third_party/minizip/unzip.h" +#include "third_party/minizip/unzip.h" #elif defined(__linux__) -#include "../../base/file.h" +#include "base/file.h" #endif -#include -#include namespace eng { @@ -40,4 +41,4 @@ class AssetFile { } // namespace eng -#endif // ASSET_FILE_H +#endif // ENGINE_PLATFORM_ASSET_FILE_H diff --git a/src/engine/platform/asset_file_android.cc b/src/engine/platform/asset_file_android.cc index 0aec418..afec6ca 100644 --- a/src/engine/platform/asset_file_android.cc +++ b/src/engine/platform/asset_file_android.cc @@ -1,6 +1,6 @@ -#include -#include "../../base/log.h" -#include "asset_file.h" +#include "engine/platform/asset_file.h" + +#include "base/log.h" namespace eng { diff --git a/src/engine/platform/asset_file_linux.cc b/src/engine/platform/asset_file_linux.cc index 505bafe..2e75011 100644 --- a/src/engine/platform/asset_file_linux.cc +++ b/src/engine/platform/asset_file_linux.cc @@ -1,5 +1,4 @@ -#include -#include "asset_file.h" +#include "engine/platform/asset_file.h" namespace eng { diff --git a/src/engine/platform/platform.cc b/src/engine/platform/platform.cc index 392419a..ff47a6c 100644 --- a/src/engine/platform/platform.cc +++ b/src/engine/platform/platform.cc @@ -1,11 +1,11 @@ -#include "platform.h" +#include "engine/platform/platform.h" -#include "../../base/log.h" -#include "../../base/task_runner.h" -#include "../audio/audio.h" -#include "../engine.h" -#include "../renderer/opengl/renderer_opengl.h" -#include "../renderer/vulkan/renderer_vulkan.h" +#include "base/log.h" +#include "base/task_runner.h" +#include "engine/audio/audio.h" +#include "engine/engine.h" +#include "engine/renderer/opengl/renderer_opengl.h" +#include "engine/renderer/vulkan/renderer_vulkan.h" #define VULKAN_RENDERER @@ -22,7 +22,7 @@ Platform::~Platform() = default; void Platform::InitializeCommon() { LOG << "Initializing platform."; - worker_.Initialize(); + thread_pool_.Initialize(); TaskRunner::CreateThreadLocalTaskRunner(); audio_ = std::make_unique