Mercurial > sdl-ios-xcode
comparison test/common.c @ 5150:ad50b3db78bd
The rendering functions take a context so it's clear what window they're drawing to. This also potentially opens to the door to multi-threaded rendering in the future.
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Tue, 01 Feb 2011 19:19:43 -0800 |
parents | c8e049de174c |
children | af8ca17f6b7c |
comparison
equal
deleted
inserted
replaced
5149:3052772b59db | 5150:ad50b3db78bd |
---|---|
644 fullscreen_mode.refresh_rate = state->refresh_rate; | 644 fullscreen_mode.refresh_rate = state->refresh_rate; |
645 | 645 |
646 state->windows = | 646 state->windows = |
647 (SDL_Window **) SDL_malloc(state->num_windows * | 647 (SDL_Window **) SDL_malloc(state->num_windows * |
648 sizeof(*state->windows)); | 648 sizeof(*state->windows)); |
649 if (!state->windows) { | 649 state->renderers = |
650 (SDL_Renderer **) SDL_malloc(state->num_windows * | |
651 sizeof(*state->renderers)); | |
652 if (!state->windows || !state->renderers) { | |
650 fprintf(stderr, "Out of memory!\n"); | 653 fprintf(stderr, "Out of memory!\n"); |
651 return SDL_FALSE; | 654 return SDL_FALSE; |
652 } | 655 } |
653 for (i = 0; i < state->num_windows; ++i) { | 656 for (i = 0; i < state->num_windows; ++i) { |
654 char title[1024]; | 657 char title[1024]; |
682 SDL_FreeSurface(icon); | 685 SDL_FreeSurface(icon); |
683 } | 686 } |
684 } | 687 } |
685 | 688 |
686 SDL_ShowWindow(state->windows[i]); | 689 SDL_ShowWindow(state->windows[i]); |
690 | |
691 state->renderers[i] = NULL; | |
687 | 692 |
688 if (!state->skip_renderer | 693 if (!state->skip_renderer |
689 && (state->renderdriver | 694 && (state->renderdriver |
690 || !(state->window_flags & SDL_WINDOW_OPENGL))) { | 695 || !(state->window_flags & SDL_WINDOW_OPENGL))) { |
691 m = -1; | 696 m = -1; |
705 "Couldn't find render driver named %s", | 710 "Couldn't find render driver named %s", |
706 state->renderdriver); | 711 state->renderdriver); |
707 return SDL_FALSE; | 712 return SDL_FALSE; |
708 } | 713 } |
709 } | 714 } |
710 if (SDL_CreateRenderer | 715 state->renderers[i] = SDL_CreateRenderer(state->windows[i], |
711 (state->windows[i], m, state->render_flags) < 0) { | 716 m, state->render_flags); |
717 if (!state->renderers[i]) { | |
712 fprintf(stderr, "Couldn't create renderer: %s\n", | 718 fprintf(stderr, "Couldn't create renderer: %s\n", |
713 SDL_GetError()); | 719 SDL_GetError()); |
714 return SDL_FALSE; | 720 return SDL_FALSE; |
715 } | 721 } |
716 if (state->verbose & VERBOSE_RENDER) { | 722 if (state->verbose & VERBOSE_RENDER) { |
717 SDL_RendererInfo info; | 723 SDL_RendererInfo info; |
718 | 724 |
719 fprintf(stderr, "Current renderer:\n"); | 725 fprintf(stderr, "Current renderer:\n"); |
720 SDL_GetRendererInfo(&info); | 726 SDL_GetRendererInfo(state->renderers[i], &info); |
721 PrintRenderer(&info); | 727 PrintRenderer(&info); |
722 } | 728 } |
723 } | 729 } |
724 } | 730 } |
725 SDL_SelectRenderer(state->windows[0]); | |
726 } | 731 } |
727 | 732 |
728 if (state->flags & SDL_INIT_AUDIO) { | 733 if (state->flags & SDL_INIT_AUDIO) { |
729 if (state->verbose & VERBOSE_AUDIO) { | 734 if (state->verbose & VERBOSE_AUDIO) { |
730 n = SDL_GetNumAudioDrivers(); | 735 n = SDL_GetNumAudioDrivers(); |
1010 } | 1015 } |
1011 | 1016 |
1012 void | 1017 void |
1013 CommonQuit(CommonState * state) | 1018 CommonQuit(CommonState * state) |
1014 { | 1019 { |
1020 int i; | |
1021 | |
1022 if (state->windows) { | |
1023 SDL_free(state->windows); | |
1024 } | |
1025 if (state->renderers) { | |
1026 for (i = 0; i < state->num_windows; ++i) { | |
1027 if (state->renderers[i]) { | |
1028 SDL_DestroyRenderer(state->renderers[i]); | |
1029 } | |
1030 } | |
1031 SDL_free(state->renderers); | |
1032 } | |
1015 if (state->flags & SDL_INIT_VIDEO) { | 1033 if (state->flags & SDL_INIT_VIDEO) { |
1016 SDL_VideoQuit(); | 1034 SDL_VideoQuit(); |
1017 } | 1035 } |
1018 if (state->flags & SDL_INIT_AUDIO) { | 1036 if (state->flags & SDL_INIT_AUDIO) { |
1019 SDL_AudioQuit(); | 1037 SDL_AudioQuit(); |
1020 } | 1038 } |
1021 if (state->windows) { | |
1022 SDL_free(state->windows); | |
1023 } | |
1024 SDL_free(state); | 1039 SDL_free(state); |
1025 } | 1040 } |
1026 | 1041 |
1027 /* vi: set ts=4 sw=4 expandtab: */ | 1042 /* vi: set ts=4 sw=4 expandtab: */ |