comparison src/dmsimple.c @ 958:985225a93aeb

Add error code parameter to dmError() and dmErrorVA().
author Matti Hamalainen <ccr@tnsp.org>
date Fri, 27 Feb 2015 03:58:25 +0200
parents 2c6b092328be
children b7c01d4ca984
comparison
equal deleted inserted replaced
957:b66653c9acb3 958:985225a93aeb
51 case 1: 51 case 1:
52 dmVerbosity++; 52 dmVerbosity++;
53 break; 53 break;
54 54
55 default: 55 default:
56 dmError("Unknown option '%s'.\n", currArg); 56 dmError(DMERR_INTERNAL,
57 "Unknown option '%s'.\n", currArg);
57 return FALSE; 58 return FALSE;
58 } 59 }
59 60
60 return TRUE; 61 return TRUE;
61 } 62 }
122 SDL_FreeSurface(engine.screen); 123 SDL_FreeSurface(engine.screen);
123 124
124 engine.screen = SDL_SetVideoMode(width, height, depth, flags); 125 engine.screen = SDL_SetVideoMode(width, height, depth, flags);
125 if (engine.screen == NULL) 126 if (engine.screen == NULL)
126 { 127 {
127 dmError("Can't SDL_SetVideoMode(): %s\n", SDL_GetError()); 128 dmError(DMERR_INIT_FAIL,
129 "Can't SDL_SetVideoMode(): %s\n", SDL_GetError());
128 return FALSE; 130 return FALSE;
129 } 131 }
130 132
131 SDL_WM_SetCaption(dmProgDesc, dmProgName); 133 SDL_WM_SetCaption(dmProgDesc, dmProgName);
132 134
255 sscanf(str, "textWindowed %s", engine.setupTextWindowed) != 1 && 257 sscanf(str, "textWindowed %s", engine.setupTextWindowed) != 1 &&
256 sscanf(str, "textPrefix %s", engine.setupTextPrefix) != 1 && 258 sscanf(str, "textPrefix %s", engine.setupTextPrefix) != 1 &&
257 sscanf(str, "textEnterToStart %s", engine.setupTextEnterToStart) != 1 259 sscanf(str, "textEnterToStart %s", engine.setupTextEnterToStart) != 1
258 ) 260 )
259 { 261 {
260 dmError("Syntax error in configuration:\n%s\n", buf); 262 res = dmError(DMERR_INVALID_DATA,
261 res = DMERR_INVALID_DATA; 263 "Syntax error in configuration:\n%s\n", buf);
262 goto out; 264 goto out;
263 } 265 }
264 } 266 }
265 267
266 out: 268 out:
294 goto out; 296 goto out;
295 297
296 SDL_Rect **modes = SDL_ListModes(engine.screen->format, engine.screen->flags | SDL_FULLSCREEN); 298 SDL_Rect **modes = SDL_ListModes(engine.screen->format, engine.screen->flags | SDL_FULLSCREEN);
297 if (modes == (SDL_Rect**) 0) 299 if (modes == (SDL_Rect**) 0)
298 { 300 {
299 dmError("No compatible video resolutions/depths available at all. Bailing out.\n"); 301 dmError(DMERR_INIT_FAIL,
302 "No compatible video resolutions/depths available at all. Bailing out.\n");
300 goto out; 303 goto out;
301 } 304 }
302 305
303 if (modes != (SDL_Rect**) -1) 306 if (modes != (SDL_Rect**) -1)
304 { 307 {
308 engineAddModeToList(modes[i]->w, modes[i]->h); 311 engineAddModeToList(modes[i]->w, modes[i]->h);
309 } 312 }
310 313
311 if (nengineModeList == 0) 314 if (nengineModeList == 0)
312 { 315 {
313 dmError("Umm, no modes found.\n"); 316 dmError(DMERR_INIT_FAIL,
317 "Umm, no modes found.\n");
314 goto out; 318 goto out;
315 } 319 }
316 320
317 qsort(engineModeList, nengineModeList, sizeof(engineModeList[0]), engineModeSort); 321 qsort(engineModeList, nengineModeList, sizeof(engineModeList[0]), engineModeSort);
318 322
361 dmf_close(file); 365 dmf_close(file);
362 } 366 }
363 367
364 if (menuBgImage == NULL || menuBarImage == NULL) 368 if (menuBgImage == NULL || menuBarImage == NULL)
365 { 369 {
366 dmError("Could not instantiate setup screen images, %d: %s\n", 370 dmError(result,
371 "Could not instantiate setup screen images, %d: %s\n",
367 result, dmErrorStr(result)); 372 result, dmErrorStr(result));
368 goto out; 373 goto out;
369 } 374 }
370 375
371 if (menuBgImage->w != DM_VSETUP_WIDTH || 376 if (menuBgImage->w != DM_VSETUP_WIDTH ||
372 menuBgImage->h != DM_VSETUP_HEIGHT) 377 menuBgImage->h != DM_VSETUP_HEIGHT)
373 { 378 {
374 dmError("Setup screen background image does not match " 379 dmError(DMERR_INIT_FAIL,
380 "Setup screen background image does not match "
375 "required dimensions (%dx%d vs %dx%d)\n", 381 "required dimensions (%dx%d vs %dx%d)\n",
376 menuBgImage->w, menuBgImage->h, 382 menuBgImage->w, menuBgImage->h,
377 DM_VSETUP_WIDTH, DM_VSETUP_HEIGHT); 383 DM_VSETUP_WIDTH, DM_VSETUP_HEIGHT);
378 goto out; 384 goto out;
379 } 385 }
386 result = dmLoadBitmapFont(file, &menuFont); 392 result = dmLoadBitmapFont(file, &menuFont);
387 dmf_close(file); 393 dmf_close(file);
388 } 394 }
389 if (result != DMERR_OK) 395 if (result != DMERR_OK)
390 { 396 {
391 dmError("Could not instantiate setup screen font, %d: %s\n", 397 dmError(result,
398 "Could not instantiate setup screen font, %d: %s\n",
392 result, dmErrorStr(result)); 399 result, dmErrorStr(result));
393 goto out; 400 goto out;
394 } 401 }
395 402
396 SDL_Surface *tmp = dmConvertScaledSurface(menuBgImage, 403 SDL_Surface *tmp = dmConvertScaledSurface(menuBgImage,
397 engine.screen->format, engine.screen->flags, 404 engine.screen->format, engine.screen->flags,
398 engine.screen->w, engine.screen->h); 405 engine.screen->w, engine.screen->h);
399 if (tmp == NULL) 406 if (tmp == NULL)
400 { 407 {
401 dmError("Could not convert setup screen background image.\n"); 408 dmError(DMERR_MALLOC,
409 "Could not convert setup screen background image.\n");
402 goto out; 410 goto out;
403 } 411 }
404 412
405 SDL_FreeSurface(menuBgImage); 413 SDL_FreeSurface(menuBgImage);
406 menuBgImage = tmp; 414 menuBgImage = tmp;
476 484
477 // Draw frame 485 // Draw frame
478 engine.frameTime = SDL_GetTicks(); 486 engine.frameTime = SDL_GetTicks();
479 if (SDL_MUSTLOCK(engine.screen) && SDL_LockSurface(engine.screen) != 0) 487 if (SDL_MUSTLOCK(engine.screen) && SDL_LockSurface(engine.screen) != 0)
480 { 488 {
481 dmError("Can't lock surface.\n"); 489 dmError(DMERR_INTERNAL, "Can't lock surface.\n");
482 goto out; 490 goto out;
483 } 491 }
484 492
485 // Render the menu 493 // Render the menu
486 dmDirectBlitSurface(menuBgImage, engine.screen); 494 dmDirectBlitSurface(menuBgImage, engine.screen);
608 // Initialize resource subsystem 616 // Initialize resource subsystem
609 dmPrint(1, "Initializing resources subsystem.\n"); 617 dmPrint(1, "Initializing resources subsystem.\n");
610 if ((err = dmResourcesInit(&engine.resources, engine.optPackFilename, 618 if ((err = dmResourcesInit(&engine.resources, engine.optPackFilename,
611 engine.optDataPath, engine.optResFlags, engineClassifier)) != DMERR_OK) 619 engine.optDataPath, engine.optResFlags, engineClassifier)) != DMERR_OK)
612 { 620 {
613 dmError("Could not initialize resource manager, #%d: %s.\n", err, dmErrorStr(err)); 621 dmError(err,
622 "Could not initialize resource manager, #%d: %s.\n",
623 err, dmErrorStr(err));
614 goto error_exit; 624 goto error_exit;
615 } 625 }
616 626
617 // Initialize SDL components 627 // Initialize SDL components
618 dmPrint(1, "Initializing libSDL.\n"); 628 dmPrint(1, "Initializing libSDL.\n");
619 if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_TIMER) != 0) 629 if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_TIMER) != 0)
620 { 630 {
621 dmError("Could not initialize SDL: %s\n", SDL_GetError()); 631 dmError(DMERR_INIT_FAIL,
632 "Could not initialize SDL: %s\n",
633 SDL_GetError());
622 goto error_exit; 634 goto error_exit;
623 } 635 }
624 initSDL = TRUE; 636 initSDL = TRUE;
625 637
626 // Set start time 638 // Set start time
665 dmPrint(1, "Initializing miniJSS mixer with fmt=%d, chn=%d, freq=%d\n", 677 dmPrint(1, "Initializing miniJSS mixer with fmt=%d, chn=%d, freq=%d\n",
666 engine.jssFormat, engine.optAfmt.channels, engine.optAfmt.freq); 678 engine.jssFormat, engine.optAfmt.channels, engine.optAfmt.freq);
667 679
668 if ((engine.jssDev = jvmInit(engine.jssFormat, engine.optAfmt.channels, engine.optAfmt.freq, JMIX_AUTO)) == NULL) 680 if ((engine.jssDev = jvmInit(engine.jssFormat, engine.optAfmt.channels, engine.optAfmt.freq, JMIX_AUTO)) == NULL)
669 { 681 {
670 dmError("jvmInit() returned NULL, voi perkele.\n"); 682 dmError(DMERR_INIT_FAIL,
683 "jvmInit() returned NULL, voi perkele.\n");
671 goto error_exit; 684 goto error_exit;
672 } 685 }
673 686
674 if ((engine.jssPlr = jmpInit(engine.jssDev)) == NULL) 687 if ((engine.jssPlr = jmpInit(engine.jssDev)) == NULL)
675 { 688 {
676 dmError("jmpInit() returned NULL\n"); 689 dmError(DMERR_INIT_FAIL,
690 "jmpInit() returned NULL\n");
677 goto error_exit; 691 goto error_exit;
678 } 692 }
679 #else 693 #else
680 dmError("miniJSS support not included.\n"); 694 dmError(DMERR_INTERNAL, "miniJSS support not included.\n");
681 #endif 695 #endif
682 break; 696 break;
683 697
684 case DM_ASETUP_TREMOR: 698 case DM_ASETUP_TREMOR:
685 #ifndef DM_USE_TREMOR 699 #ifndef DM_USE_TREMOR
686 dmError("Tremor support not included.\n"); 700 dmError(DMERR_INTERNAL, "Tremor support not included.\n");
687 #endif 701 #endif
688 break; 702 break;
689 } 703 }
690 704
691 // Initialize SDL audio 705 // Initialize SDL audio
693 engine.optAfmt.format, engine.optAfmt.channels, 707 engine.optAfmt.format, engine.optAfmt.channels,
694 engine.optAfmt.freq, engine.optAfmt.samples); 708 engine.optAfmt.freq, engine.optAfmt.samples);
695 709
696 if ((err = engineInitAudioParts(&engine)) != DMERR_OK) 710 if ((err = engineInitAudioParts(&engine)) != DMERR_OK)
697 { 711 {
698 dmError("engineInitAudioParts() failed: #%d: %s\n", err, dmErrorStr(err)); 712 dmError(err,
713 "engineInitAudioParts() failed: #%d: %s\n",
714 err, dmErrorStr(err));
699 goto error_exit; 715 goto error_exit;
700 } 716 }
701 717
702 // Initialize SDL video 718 // Initialize SDL video
703 if (engine.demoInitPreVideo != NULL && 719 if (engine.demoInitPreVideo != NULL &&
704 (err = engine.demoInitPreVideo(&engine)) != DMERR_OK) 720 (err = engine.demoInitPreVideo(&engine)) != DMERR_OK)
705 { 721 {
706 dmError("demoInitPreVideo() failed, #%d: %s\n", err, dmErrorStr(err)); 722 dmError(err,
723 "demoInitPreVideo() failed, #%d: %s\n",
724 err, dmErrorStr(err));
707 goto error_exit; 725 goto error_exit;
708 } 726 }
709 727
710 if (!engineInitializeVideo()) 728 if (!engineInitializeVideo())
711 goto error_exit; 729 goto error_exit;
712 730
713 if (engine.demoInitPostVideo != NULL && 731 if (engine.demoInitPostVideo != NULL &&
714 (err = engine.demoInitPostVideo(&engine)) != DMERR_OK) 732 (err = engine.demoInitPostVideo(&engine)) != DMERR_OK)
715 { 733 {
716 dmError("demoInitPostVideo() failed, #%d: %s\n", err, dmErrorStr(err)); 734 dmError(err,
735 "demoInitPostVideo() failed, #%d: %s\n",
736 err, dmErrorStr(err));
717 goto error_exit; 737 goto error_exit;
718 } 738 }
719 739
720 // Hide cursor 740 // Hide cursor
721 SDL_ShowCursor(SDL_DISABLE); 741 SDL_ShowCursor(SDL_DISABLE);
738 } 758 }
739 759
740 // Initialize effects 760 // Initialize effects
741 if ((err = engineInitializeEffects(&engine)) != DMERR_OK) 761 if ((err = engineInitializeEffects(&engine)) != DMERR_OK)
742 { 762 {
743 dmError("Effects initialization failed, #%d: %s\n", 763 dmError(err,
764 "Effects initialization failed, #%d: %s\n",
744 err, dmErrorStr(err)); 765 err, dmErrorStr(err));
745 goto error_exit; 766 goto error_exit;
746 } 767 }
747 768
748 // Use a timeline, if set 769 // Use a timeline, if set
749 #ifdef DM_USE_TIMELINE 770 #ifdef DM_USE_TIMELINE
750 if (engine.timeline != NULL) 771 if (engine.timeline != NULL)
751 { 772 {
752 if ((err = dmLoadTimeline(engine.timeline, &engine.tl)) != DMERR_OK) 773 if ((err = dmLoadTimeline(engine.timeline, &engine.tl)) != DMERR_OK)
753 { 774 {
754 dmError("Error loading timeline, #%d: %s\n", err, 775 dmError(err,
755 dmErrorStr(err)); 776 "Error loading timeline, #%d: %s\n",
777 err, dmErrorStr(err));
756 goto error_exit; 778 goto error_exit;
757 } 779 }
758 780
759 if ((err = dmPrepareTimeline(engine.tl, engine.ptl)) != DMERR_OK) 781 if ((err = dmPrepareTimeline(engine.tl, engine.ptl)) != DMERR_OK)
760 { 782 {
761 dmError("Error creating prepared timeline, #%d: %s\n", 783 dmError(err,
784 "Error creating prepared timeline, #%d: %s\n",
762 err, dmErrorStr(err)); 785 err, dmErrorStr(err));
763 goto error_exit; 786 goto error_exit;
764 } 787 }
765 } 788 }
766 #endif 789 #endif
831 engine.startTime = engine.frameTime - engine.pauseTime; 854 engine.startTime = engine.frameTime - engine.pauseTime;
832 } 855 }
833 856
834 if (SDL_MUSTLOCK(engine.screen) && SDL_LockSurface(engine.screen) != 0) 857 if (SDL_MUSTLOCK(engine.screen) && SDL_LockSurface(engine.screen) != 0)
835 { 858 {
836 dmError("Can't lock surface.\n"); 859 dmError(DMERR_INTERNAL, "Can't lock surface.\n");
837 goto error_exit; 860 goto error_exit;
838 } 861 }
839 862
840 // Call main tick 863 // Call main tick
841 if (engine.demoRender != NULL) 864 if (engine.demoRender != NULL)