aboutsummaryrefslogtreecommitdiff
path: root/sources/TZR_Quit.c
blob: 092e817befc9293be604fa3f66414ca8341d5d06 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include "TZR.h"
#include "TZR_globals.h"
#include <SDL2/SDL.h>
#include <SDL2/SDL_mixer.h>

void
TZR_Quit(void)
{
	for (size_t i = 0; i < ___tzr_resources_size; i++)
		TZR_DestroyResource(&___tzr_resources[i], 1);
	if (___tzr_resources != NULL)
		free(___tzr_resources);
	___tzr_resources = NULL;
	___tzr_resources_size = 0;
	___tzr_resources_capacity = 0;
	for (size_t i = 0; i < ___tzr_joysticks_size; i++) {
		if (___tzr_joysticks[i].ptr != NULL)
			SDL_GameControllerClose(___tzr_joysticks[i].ptr);
	}
	if (___tzr_joysticks != NULL)
		free(___tzr_joysticks);
	___tzr_joysticks = NULL;
	___tzr_joysticks_size = 0;
	___tzr_joysticks_capacity = 0;
	if (___tzr_target_pre != NULL) {
		SDL_DestroyTexture(___tzr_target_pre);
		___tzr_target = NULL;
	}
	if (___tzr_target != NULL) {
		SDL_DestroyTexture(___tzr_target);
		___tzr_target = NULL;
	}
	if (___tzr_renderer != NULL) {
		SDL_DestroyRenderer(___tzr_renderer);
		___tzr_renderer = NULL;
	}
	if (___tzr_gl_ctx != NULL) {
		SDL_GL_DeleteContext(___tzr_gl_ctx);
		___tzr_gl_ctx = NULL;
	}
	if (___tzr_window != NULL) {
		SDL_DestroyWindow(___tzr_window);
		___tzr_window = NULL;
	}
	if (___tzr_config.mixer) {
#ifdef TZR_SOLOUD
		Soloud_deinit(___tzr_soloud);
		Soloud_destroy(___tzr_soloud);
		___tzr_soloud = NULL;
#endif
		Mix_CloseAudio();
		Mix_Quit();
	}
	SDL_Quit();
}