shithub: cstory

Download patch

ref: 14422999243c3a569e86f8a50c2d690d46fa7381
parent: c15ecbf7280c4b6714412f0ce5ce40b29c1b5aa4
author: Gabriel Ravier <gabrielravier@gabrielAncientIBMv2>
date: Wed Jan 29 12:59:56 EST 2020

Made MixSounds be marked as hot

Signed-off-by: Gabriel Ravier <gabrielravier@gabrielAncientIBMv2>

--- a/src/Backends/Audio/SDL2.cpp
+++ b/src/Backends/Audio/SDL2.cpp
@@ -12,6 +12,7 @@
 
 #include "../../Organya.h"
 #include "../../WindowsWrapper.h"
+#include "../../CommonDefines.h"
 
 #define MIN(a, b) ((a) < (b) ? (a) : (b))
 #define MAX(a, b) ((a) > (b) ? (a) : (b))
@@ -70,7 +71,8 @@
 	sound->volume_r = sound->pan_r * sound->volume;
 }
 
-static void MixSounds(float *stream, unsigned int frames_total)
+// Most CPU-intensive function in the game (2/3rd CPU time consumption in my experience), so marked with attrHot so the compiler considers it a hot spot (as it is) when optimizing
+attrHot static void MixSounds(float *stream, unsigned int frames_total)
 {
 	for (AudioBackend_Sound *sound = sound_list_head; sound != NULL; sound = sound->next)
 	{
--- a/src/CommonDefines.h
+++ b/src/CommonDefines.h
@@ -10,6 +10,10 @@
 #define TILES_TO_UNITS(x) ((int)((x) * (0x200 * 0x10)))
 #define UNITS_TO_TILES(x) ((int)((x) / (0x200 * 0x10)))
 
+#ifdef __GNUC__
+#define attrHot __attribute__((hot))
+#endif
+
 enum Collisions
 {
 	COLL_LEFT_WALL = 1,     // Touching a left wall
--