Browse Source

added flag for having user handle SDL events

iver 7 months ago
parent
commit
dd89e4c531

+ 1 - 1
Makefile

@@ -1,6 +1,6 @@
 COMPILER=gcc
 FLAGS_ALL=-g -Wall -Wextra
-FLAGS_EXAMPLE=-Lbuilds/final\ binaries -lrasteriver -Wl,-rpath=builds/final\ binaries/ -lm
+FLAGS_EXAMPLE=-Lbuilds/final\ binaries -lrasteriver -Wl,-rpath=builds/final\ binaries/ -lm -lSDL2
 FLAGS_LIB=-D CL_TARGET_OPENCL_VERSION=120 -fPIC -shared -lc -lSDL2 -lSDL2_ttf -lm -lOpenCL
 
 main.bin: rasteriver.so

BIN
builds/final binaries/librasteriver.so


BIN
builds/final binaries/main.bin


+ 4 - 1
src/RasterIver/headers/rasteriver.h

@@ -6,6 +6,7 @@
 #include <stdint.h>
 #include "../kernels/master_kernel.h"
 #include "../kernels/non_master_kernel.h"
+#include <SDL2/SDL.h>
 
 typedef int RI_result;
 typedef int RI_flag;
@@ -70,6 +71,7 @@ typedef enum {
     RI_FLAG_SHOW_INFO           = 10,
     RI_FLAG_DEBUG_TICK          = 11,
     RI_FLAG_USE_CPU             = 12,
+    RI_FLAG_HANDLE_SDL_EVENTS   = 13,
 } RI_flag_enum;
 
 // RI_BUFFER
@@ -130,6 +132,7 @@ RI_result   RI_SetFpsCap(int RI_FpsCap);
 // Returns a list of Rasteriver flags
 RI_result   RI_ListFlags();
 
-
+// Returns the last SDL_Event
+SDL_Event RI_GetLastSDLEvent();
 
 #endif // RASTERIVER_H

+ 18 - 7
src/RasterIver/source code/rasteriver.c

@@ -1,5 +1,4 @@
 #include <stdlib.h>
-#include <SDL2/SDL.h>
 #include <math.h>
 #include <time.h>
 #include <CL/cl.h>
@@ -43,6 +42,7 @@ int show_frame = 0;
 int show_info = 0;
 int debug_tick = 0;
 int use_cpu = 0;
+int handle_events = 1;
 
 Uint64 start_time;
 double frame_time_ms;
@@ -53,6 +53,8 @@ int fps_cap = -1;
 // ----- Internal Variables
 
 // ----- Rendering Vars
+SDL_Event event;
+
 SDL_Window *window;
 SDL_Renderer *renderer;
 SDL_Texture *texture;
@@ -237,6 +239,10 @@ RI_result RI_IsRunning()
     }
 }
 
+SDL_Event RI_GetLastSDLEvent(){
+    return event;
+}
+
 RI_result RI_ListFlags(){
     printf("RI_FLAG_DEBUG: Turns debugging on or off\n");
     printf("RI_FLAG_DEBUG_VERBOSE: If debugging and verbose is on, print extra data\n");
@@ -309,6 +315,10 @@ RI_result RI_SetFlag(RI_flag RI_FlagToSet, int RI_Value){
         use_cpu = RI_Value;
         break;
 
+    case RI_FLAG_HANDLE_SDL_EVENTS:
+        handle_events = RI_Value;
+        break;
+
     default:
         return RI_INVALID_FLAG;
     }
@@ -1357,13 +1367,14 @@ for (int id_x = -width / 2; id_x < width / 2; id_x++){
             debug_tick_func(1, "Read Frame Buffer");
         }
 
-        SDL_Event event;
-        while (SDL_PollEvent(&event))
-        {
-            switch (event.type)
+        if (handle_events){
+            while (SDL_PollEvent(&event))
             {
-            case SDL_QUIT:
-                running = 0;
+                switch (event.type)
+                {
+                case SDL_QUIT:
+                    running = 0;
+                }
             }
         }
 

+ 12 - 4
src/launch program/main.c

@@ -19,6 +19,7 @@ int main(){
     RI_SetFlag(RI_FLAG_CLEAN_POLYGONS, 1);
     RI_SetFlag(RI_FLAG_POPULATE_POLYGONS, 0);
     RI_SetFlag(RI_FLAG_BE_MASTER_RENDERER, 1);
+    RI_SetFlag(RI_FLAG_HANDLE_SDL_EVENTS, 0);
     RI_SetFlag(RI_FLAG_SHOW_INFO, 0);
     RI_SetFpsCap(120);
 
@@ -34,12 +35,19 @@ int main(){
 
     RI_objects objects = RI_RequestObjects(object_buffer, 1);
 
+    SDL_Event event;
+
     while (RI_IsRunning() == RI_RUNNING){
-        objects[3] += 0.3;
-        objects[4] -= 0.4;
-        objects[5] += 0.3;
-        
         RI_Tick();
+
+        while (SDL_PollEvent(&event))
+        {
+            switch (event.type)
+            {
+            case SDL_QUIT:
+                RI_Stop(0);
+            }
+        }
     }
 
     RI_Stop();