コード例 #1
0
ファイル: SPMainAux.c プロジェクト: MatanDev/C_Final_Project
bool initConfigAndLogger(int argc, char** argv, SPConfig* config) {
	char *configFilename, *loggerFilename;
	SP_CONFIG_MSG configMsg = SP_CONFIG_SUCCESS;
	SP_LOGGER_LEVEL loggerLevel;
	SP_LOGGER_MSG loggerMsg;

	if (!(configFilename = getConfigFilename(argc, argv))) {
		printf(INVALID_CMD_LINE);
		return false;
	}

	if (!(*config = getConfigFromFile(configFilename, &configMsg)) ||
			configMsg != SP_CONFIG_SUCCESS) {
		printf(ERROR_AT_GET_CONFIG_FROM_FILE, configMsgToStr(configMsg));
		return false;
	}

	loggerFilename = spConfigGetLoggerFilename(*config, &configMsg);
	if (loggerFilename == NULL || configMsg != SP_CONFIG_SUCCESS) {
		printf(ERROR_AT_GET_LOGGER_FILENAME_FROM_CONFIG, configMsgToStr(configMsg));
		return false;
	}

	loggerLevel = spConfigGetLoggerLevel(*config, &configMsg);

	if (configMsg != SP_CONFIG_SUCCESS) {
		printf(ERROR_AT_GET_LOGGER_LEVEL_FROM_CONFIG, configMsgToStr(configMsg));
		return false;
	}

	loggerMsg = spLoggerCreate(!strcmp(loggerFilename, STDOUT) ? NULL : loggerFilename,
			loggerLevel);

	if (loggerMsg != SP_LOGGER_SUCCESS) {
		printf(ERROR_AT_CREATE_LOGGER, loggerMsgToStr(loggerMsg));
		return false;
	}
	spLoggerSafePrintDebug(DEBUG_LOGGER_HAS_BEEN_CREATED, __FILE__, __FUNCTION__,
			__LINE__);

	return true;
}
コード例 #2
0
int main(int argc, char **argv) {

	// fix `fullscreen quit kills mouse` issue.
	atexit(SDL_Quit);

	std::string config_filename = getConfigFilename();
	ConfigFile config(config_filename);

	// window dimensions from configfile
	wvw = config.read<int>("Window Width", 512);
	wvh = config.read<int>("Window Height", 512);
	fullscreen = config.read("Fullscreen", true);

	init_display(wvw, wvh, &fvw, &fvh, fullscreen);

	SDL_WM_SetCaption(PROJECTM_TITLE, NULL);

	// memleak test
	while (doMemleakTest) {
		static int k = 0;
		std::cerr << "[iter " << k++ << "]" << std::endl;
		globalPM = new projectM(config_filename);
		assert(globalPM);
		delete (globalPM);
		if (k >= memLeakIterations)
			break;
	}

	globalPM = new projectM(config_filename);

	// if started fullscreen, give PM new viewport dimensions
	if (fullscreen)
		globalPM->projectM_resetGL(fvw, fvh);

	renderLoop();

	// not reached
	return 1;
}