trunk/src/osd/sdl/draw13.c
| r243361 | r243362 | |
| 165 | 165 | INT32 m_blittimer; |
| 166 | 166 | UINT32 m_extra_flags; |
| 167 | 167 | |
| 168 | |
| 169 | #if (SDLMAME_SDL2) |
| 170 | // Original display_mode |
| 171 | SDL_DisplayMode m_original_mode; |
| 172 | |
| 173 | SDL_GLContext m_gl_context_id; |
| 174 | #else |
| 175 | // SDL surface |
| 176 | SDL_Surface *m_sdlsurf; |
| 177 | #endif |
| 178 | |
| 168 | 179 | SDL_Renderer * m_renderer; |
| 169 | 180 | simple_list<texture_info> m_texlist; // list of active textures |
| 170 | 181 | |
| r243361 | r243362 | |
| 180 | 191 | // Stats |
| 181 | 192 | INT64 m_last_blit_time; |
| 182 | 193 | INT64 m_last_blit_pixels; |
| 183 | | |
| 184 | | // Original display_mode |
| 185 | | SDL_DisplayMode m_original_mode; |
| 186 | 194 | }; |
| 187 | 195 | |
| 188 | 196 | struct copy_info_t { |
| r243361 | r243362 | |
| 201 | 209 | copy_info_t *next; |
| 202 | 210 | }; |
| 203 | 211 | |
| 212 | |
| 204 | 213 | //============================================================ |
| 205 | 214 | // PROTOTYPES |
| 206 | 215 | //============================================================ |
| r243361 | r243362 | |
| 453 | 462 | } |
| 454 | 463 | |
| 455 | 464 | //============================================================ |
| 456 | | // drawsdl2_init |
| 465 | // drawsdl_init |
| 457 | 466 | //============================================================ |
| 458 | 467 | |
| 459 | 468 | static void add_list(copy_info_t **head, copy_info_t *element, Uint32 bm) |
| r243361 | r243362 | |
| 517 | 526 | else |
| 518 | 527 | osd_printf_verbose("Loaded opengl shared library: %s\n", stemp ? stemp : "<default>"); |
| 519 | 528 | |
| 520 | | /* Enable bilinear filtering in case it is supported. |
| 521 | | * This applies to all texture operations. However, artwort is pre-scaled |
| 522 | | * and thus shouldn't be affected. |
| 523 | | */ |
| 524 | | if (video_config.filter) |
| 525 | | { |
| 526 | | SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, "1"); |
| 527 | | } |
| 528 | | else |
| 529 | | { |
| 530 | | SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, "0"); |
| 531 | | } |
| 532 | | |
| 533 | 529 | return 0; |
| 534 | 530 | } |
| 535 | 531 | |
| 536 | 532 | |
| 537 | 533 | //============================================================ |
| 538 | | // drawsdl2_exit |
| 534 | // drawsdl_exit |
| 539 | 535 | //============================================================ |
| 540 | 536 | |
| 541 | 537 | static void drawsdl2_exit(void) |
| r243361 | r243362 | |
| 671 | 667 | |
| 672 | 668 | // create renderer |
| 673 | 669 | |
| 670 | /* Enable bilinear filtering in case it is supported. |
| 671 | * This applies to all texture operations. However, artwort is pre-scaled |
| 672 | * and thus shouldn't be affected. |
| 673 | */ |
| 674 | if (video_config.filter) |
| 675 | { |
| 676 | SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, "1"); |
| 677 | } |
| 678 | else |
| 679 | { |
| 680 | SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, "0"); |
| 681 | } |
| 682 | |
| 674 | 683 | if (video_config.waitvsync) |
| 675 | 684 | m_renderer = SDL_CreateRenderer(window().m_sdl_window, -1, SDL_RENDERER_PRESENTVSYNC | SDL_RENDERER_ACCELERATED); |
| 676 | 685 | else |
| r243361 | r243362 | |
| 690 | 699 | |
| 691 | 700 | #else |
| 692 | 701 | m_extra_flags = (window().fullscreen() ? SDL_FULLSCREEN : SDL_RESIZABLE); |
| 702 | |
| 703 | if (this->check_flag(FLAG_NEEDS_DOUBLEBUF)) |
| 693 | 704 | m_extra_flags |= SDL_DOUBLEBUF; |
| 705 | if (this->check_flag(FLAG_NEEDS_ASYNCBLIT)) |
| 706 | m_extra_flags |= SDL_ASYNCBLIT; |
| 694 | 707 | |
| 695 | | if (check_flag(FLAG_NEEDS_OPENGL)) |
| 708 | if (this->check_flag(FLAG_NEEDS_OPENGL)) |
| 696 | 709 | { |
| 697 | | m_extra_flags |= SDL_OPENGL; |
| 710 | m_extra_flags |= SDL_DOUBLEBUF | SDL_OPENGL; |
| 698 | 711 | SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 ); |
| 699 | 712 | #if (SDL_VERSION_ATLEAST(1,2,10)) && (!defined(SDLMAME_EMSCRIPTEN)) |
| 700 | 713 | SDL_GL_SetAttribute(SDL_GL_SWAP_CONTROL, video_config.waitvsync ? 1 : 0); |
| r243361 | r243362 | |
| 752 | 765 | |
| 753 | 766 | void sdl_info13::destroy() |
| 754 | 767 | { |
| 768 | |
| 755 | 769 | // free the memory in the window |
| 756 | 770 | |
| 757 | 771 | destroy_all_textures(); |
| 758 | 772 | |
| 773 | #if (SDLMAME_SDL2) |
| 774 | if (check_flag(FLAG_NEEDS_OPENGL)) |
| 775 | SDL_GL_DeleteContext(m_gl_context_id); |
| 759 | 776 | if (window().fullscreen() && video_config.switchres) |
| 760 | 777 | { |
| 761 | 778 | SDL_SetWindowFullscreen(window().m_sdl_window, 0); // Try to set mode |
| r243361 | r243362 | |
| 764 | 781 | } |
| 765 | 782 | |
| 766 | 783 | SDL_DestroyWindow(window().m_sdl_window); |
| 767 | | |
| 784 | #else |
| 785 | if (m_sdlsurf) |
| 786 | { |
| 787 | SDL_FreeSurface(m_sdlsurf); |
| 788 | m_sdlsurf = NULL; |
| 789 | } |
| 790 | #endif |
| 768 | 791 | } |
| 769 | 792 | |
| 770 | 793 | //============================================================ |
| r243361 | r243362 | |
| 794 | 817 | } |
| 795 | 818 | |
| 796 | 819 | //============================================================ |
| 820 | // drawsdl_destroy_all_textures |
| 821 | //============================================================ |
| 822 | |
| 823 | void sdl_info13::destroy_all_textures() |
| 824 | { |
| 825 | if(window().m_primlist) |
| 826 | { |
| 827 | window().m_primlist->acquire_lock(); |
| 828 | m_texlist.reset(); |
| 829 | window().m_primlist->release_lock(); |
| 830 | } |
| 831 | else |
| 832 | m_texlist.reset(); |
| 833 | } |
| 834 | |
| 835 | //============================================================ |
| 797 | 836 | // sdl_info::draw |
| 798 | 837 | //============================================================ |
| 799 | 838 | |
| r243361 | r243362 | |
| 1224 | 1263 | return texture; |
| 1225 | 1264 | } |
| 1226 | 1265 | |
| 1227 | | |
| 1228 | | void sdl_info13::destroy_all_textures() |
| 1229 | | { |
| 1230 | | if(window().m_primlist) |
| 1231 | | { |
| 1232 | | window().m_primlist->acquire_lock(); |
| 1233 | | m_texlist.reset(); |
| 1234 | | window().m_primlist->release_lock(); |
| 1235 | | } |
| 1236 | | else |
| 1237 | | m_texlist.reset(); |
| 1238 | | } |
trunk/src/osd/sdl/drawogl.c
| r243361 | r243362 | |
| 811 | 811 | |
| 812 | 812 | #else |
| 813 | 813 | m_extra_flags = (window().fullscreen() ? SDL_FULLSCREEN : SDL_RESIZABLE); |
| 814 | |
| 815 | if (this->check_flag(FLAG_NEEDS_DOUBLEBUF)) |
| 814 | 816 | m_extra_flags |= SDL_DOUBLEBUF; |
| 817 | if (this->check_flag(FLAG_NEEDS_ASYNCBLIT)) |
| 818 | m_extra_flags |= SDL_ASYNCBLIT; |
| 815 | 819 | |
| 816 | | if (check_flag(FLAG_NEEDS_OPENGL)) |
| 820 | if (this->check_flag(FLAG_NEEDS_OPENGL)) |
| 817 | 821 | { |
| 818 | | m_extra_flags |= SDL_OPENGL; |
| 822 | m_extra_flags |= SDL_DOUBLEBUF | SDL_OPENGL; |
| 819 | 823 | SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 ); |
| 820 | 824 | #if (SDL_VERSION_ATLEAST(1,2,10)) && (!defined(SDLMAME_EMSCRIPTEN)) |
| 821 | 825 | SDL_GL_SetAttribute(SDL_GL_SWAP_CONTROL, video_config.waitvsync ? 1 : 0); |
| r243361 | r243362 | |
| 908 | 912 | destroy_all_textures(); |
| 909 | 913 | |
| 910 | 914 | #if (SDLMAME_SDL2) |
| 911 | | SDL_GL_DeleteContext(m_gl_context_id); |
| 915 | if (check_flag(FLAG_NEEDS_OPENGL)) |
| 916 | SDL_GL_DeleteContext(m_gl_context_id); |
| 912 | 917 | if (window().fullscreen() && video_config.switchres) |
| 913 | 918 | { |
| 914 | 919 | SDL_SetWindowFullscreen(window().m_sdl_window, 0); // Try to set mode |
| r243361 | r243362 | |
| 942 | 947 | |
| 943 | 948 | int sdl_info_ogl::xy_to_render_target(int x, int y, int *xt, int *yt) |
| 944 | 949 | { |
| 950 | |
| 945 | 951 | *xt = x - m_last_hofs; |
| 946 | 952 | *yt = y - m_last_vofs; |
| 947 | 953 | if (*xt<0 || *xt >= window().m_blitwidth) |
| r243361 | r243362 | |
| 952 | 958 | } |
| 953 | 959 | |
| 954 | 960 | //============================================================ |
| 961 | // drawsdl_destroy_all_textures |
| 962 | //============================================================ |
| 963 | |
| 964 | void sdl_info_ogl::destroy_all_textures() |
| 965 | { |
| 966 | texture_info *texture = NULL; |
| 967 | int lock=FALSE; |
| 968 | int i; |
| 969 | |
| 970 | if ( !m_initialized ) |
| 971 | return; |
| 972 | |
| 973 | #if (SDLMAME_SDL2) |
| 974 | SDL_GL_MakeCurrent(window().m_sdl_window, m_gl_context_id); |
| 975 | #endif |
| 976 | |
| 977 | if(window().m_primlist) |
| 978 | { |
| 979 | lock=TRUE; |
| 980 | window().m_primlist->acquire_lock(); |
| 981 | } |
| 982 | |
| 983 | glFinish(); |
| 984 | |
| 985 | texture_all_disable(); |
| 986 | glFinish(); |
| 987 | glDisableClientState(GL_VERTEX_ARRAY); |
| 988 | |
| 989 | i=0; |
| 990 | while (i<HASH_SIZE+OVERFLOW_SIZE) |
| 991 | { |
| 992 | texture = m_texhash[i]; |
| 993 | m_texhash[i] = NULL; |
| 994 | if (texture != NULL) |
| 995 | { |
| 996 | if(m_usevbo) |
| 997 | { |
| 998 | pfn_glDeleteBuffers( 1, &(texture->texCoordBufferName) ); |
| 999 | texture->texCoordBufferName=0; |
| 1000 | } |
| 1001 | |
| 1002 | if(m_usepbo && texture->pbo) |
| 1003 | { |
| 1004 | pfn_glDeleteBuffers( 1, (GLuint *)&(texture->pbo) ); |
| 1005 | texture->pbo=0; |
| 1006 | } |
| 1007 | |
| 1008 | if( m_glsl_program_num > 1 ) |
| 1009 | { |
| 1010 | assert(m_usefbo); |
| 1011 | pfn_glDeleteFramebuffers(2, (GLuint *)&texture->mpass_fbo_mamebm[0]); |
| 1012 | glDeleteTextures(2, (GLuint *)&texture->mpass_texture_mamebm[0]); |
| 1013 | } |
| 1014 | |
| 1015 | if ( m_glsl_program_mb2sc < m_glsl_program_num - 1 ) |
| 1016 | { |
| 1017 | assert(m_usefbo); |
| 1018 | pfn_glDeleteFramebuffers(2, (GLuint *)&texture->mpass_fbo_scrn[0]); |
| 1019 | glDeleteTextures(2, (GLuint *)&texture->mpass_texture_scrn[0]); |
| 1020 | } |
| 1021 | |
| 1022 | glDeleteTextures(1, (GLuint *)&texture->texture); |
| 1023 | if ( texture->data_own ) |
| 1024 | { |
| 1025 | free(texture->data); |
| 1026 | texture->data=NULL; |
| 1027 | texture->data_own=FALSE; |
| 1028 | } |
| 1029 | global_free(texture); |
| 1030 | } |
| 1031 | i++; |
| 1032 | } |
| 1033 | if ( m_useglsl ) |
| 1034 | { |
| 1035 | glsl_shader_free(m_glsl); |
| 1036 | m_glsl = NULL; |
| 1037 | } |
| 1038 | |
| 1039 | m_initialized = 0; |
| 1040 | |
| 1041 | if (lock) |
| 1042 | window().m_primlist->release_lock(); |
| 1043 | } |
| 1044 | //============================================================ |
| 955 | 1045 | // loadGLExtensions |
| 956 | 1046 | //============================================================ |
| 957 | 1047 | |
| r243361 | r243362 | |
| 3107 | 3197 | } |
| 3108 | 3198 | } |
| 3109 | 3199 | |
| 3110 | | void sdl_info_ogl::destroy_all_textures() |
| 3111 | | { |
| 3112 | | texture_info *texture = NULL; |
| 3113 | | int lock=FALSE; |
| 3114 | | int i; |
| 3115 | 3200 | |
| 3116 | | if ( !m_initialized ) |
| 3117 | | return; |
| 3118 | 3201 | |
| 3119 | | #if (SDLMAME_SDL2) |
| 3120 | | SDL_GL_MakeCurrent(window().m_sdl_window, m_gl_context_id); |
| 3121 | | #endif |
| 3122 | | |
| 3123 | | if(window().m_primlist) |
| 3124 | | { |
| 3125 | | lock=TRUE; |
| 3126 | | window().m_primlist->acquire_lock(); |
| 3127 | | } |
| 3128 | | |
| 3129 | | glFinish(); |
| 3130 | | |
| 3131 | | texture_all_disable(); |
| 3132 | | glFinish(); |
| 3133 | | glDisableClientState(GL_VERTEX_ARRAY); |
| 3134 | | |
| 3135 | | i=0; |
| 3136 | | while (i<HASH_SIZE+OVERFLOW_SIZE) |
| 3137 | | { |
| 3138 | | texture = m_texhash[i]; |
| 3139 | | m_texhash[i] = NULL; |
| 3140 | | if (texture != NULL) |
| 3141 | | { |
| 3142 | | if(m_usevbo) |
| 3143 | | { |
| 3144 | | pfn_glDeleteBuffers( 1, &(texture->texCoordBufferName) ); |
| 3145 | | texture->texCoordBufferName=0; |
| 3146 | | } |
| 3147 | | |
| 3148 | | if(m_usepbo && texture->pbo) |
| 3149 | | { |
| 3150 | | pfn_glDeleteBuffers( 1, (GLuint *)&(texture->pbo) ); |
| 3151 | | texture->pbo=0; |
| 3152 | | } |
| 3153 | | |
| 3154 | | if( m_glsl_program_num > 1 ) |
| 3155 | | { |
| 3156 | | assert(m_usefbo); |
| 3157 | | pfn_glDeleteFramebuffers(2, (GLuint *)&texture->mpass_fbo_mamebm[0]); |
| 3158 | | glDeleteTextures(2, (GLuint *)&texture->mpass_texture_mamebm[0]); |
| 3159 | | } |
| 3160 | | |
| 3161 | | if ( m_glsl_program_mb2sc < m_glsl_program_num - 1 ) |
| 3162 | | { |
| 3163 | | assert(m_usefbo); |
| 3164 | | pfn_glDeleteFramebuffers(2, (GLuint *)&texture->mpass_fbo_scrn[0]); |
| 3165 | | glDeleteTextures(2, (GLuint *)&texture->mpass_texture_scrn[0]); |
| 3166 | | } |
| 3167 | | |
| 3168 | | glDeleteTextures(1, (GLuint *)&texture->texture); |
| 3169 | | if ( texture->data_own ) |
| 3170 | | { |
| 3171 | | free(texture->data); |
| 3172 | | texture->data=NULL; |
| 3173 | | texture->data_own=FALSE; |
| 3174 | | } |
| 3175 | | global_free(texture); |
| 3176 | | } |
| 3177 | | i++; |
| 3178 | | } |
| 3179 | | if ( m_useglsl ) |
| 3180 | | { |
| 3181 | | glsl_shader_free(m_glsl); |
| 3182 | | m_glsl = NULL; |
| 3183 | | } |
| 3184 | | |
| 3185 | | m_initialized = 0; |
| 3186 | | |
| 3187 | | if (lock) |
| 3188 | | window().m_primlist->release_lock(); |
| 3189 | | } |
| 3190 | | |
trunk/src/osd/sdl/drawsdl.c
| r243361 | r243362 | |
| 50 | 50 | { |
| 51 | 51 | public: |
| 52 | 52 | |
| 53 | | sdl_info(sdl_window_info *w) |
| 54 | | : osd_renderer(w, FLAG_NONE), |
| 53 | sdl_info(sdl_window_info *w, int extra_flags) |
| 54 | : osd_renderer(w, extra_flags), |
| 55 | 55 | m_blittimer(0), |
| 56 | 56 | m_extra_flags(0), |
| 57 | 57 | |
| r243361 | r243362 | |
| 164 | 164 | |
| 165 | 165 | static const sdl_scale_mode scale_modes[] = |
| 166 | 166 | { |
| 167 | | { "none", 0, 0, 1, 1, SDL_DOUBLEBUF, 0, 0 }, |
| 168 | | { "async", 0, 0, 1, 1, SDL_DOUBLEBUF | SDL_ASYNCBLIT, 0, 0 }, |
| 167 | { "none", 0, 0, 1, 1, osd_renderer::FLAG_NEEDS_DOUBLEBUF, 0, 0 }, |
| 168 | { "async", 0, 0, 1, 1, osd_renderer::FLAG_NEEDS_DOUBLEBUF | osd_renderer::FLAG_NEEDS_ASYNCBLIT, 0, 0 }, |
| 169 | 169 | { "yv12", 1, 1, 1, 1, 0, SDL_YV12_OVERLAY, yuv_RGB_to_YV12 }, |
| 170 | 170 | { "yv12x2", 1, 1, 2, 2, 0, SDL_YV12_OVERLAY, yuv_RGB_to_YV12X2 }, |
| 171 | 171 | { "yuy2", 1, 1, 1, 1, 0, SDL_YUY2_OVERLAY, yuv_RGB_to_YUY2 }, |
| r243361 | r243362 | |
| 178 | 178 | { "none", 0, 0, 1, 1, DRAW2_SCALEMODE_NEAREST, 0, 0 }, |
| 179 | 179 | { "hwblit", 1, 0, 1, 1, DRAW2_SCALEMODE_LINEAR, 0, 0 }, |
| 180 | 180 | { "hwbest", 1, 0, 1, 1, DRAW2_SCALEMODE_BEST, 0, 0 }, |
| 181 | | { "yv12", 1, 1, 1, 1, DRAW2_SCALEMODE_NEAREST, SDL_PIXELFORMAT_YV12, yuv_RGB_to_YV12 }, |
| 182 | | { "yv12x2", 1, 1, 2, 2, DRAW2_SCALEMODE_NEAREST, SDL_PIXELFORMAT_YV12, yuv_RGB_to_YV12X2 }, |
| 183 | | { "yuy2", 1, 1, 1, 1, DRAW2_SCALEMODE_NEAREST, SDL_PIXELFORMAT_YUY2, yuv_RGB_to_YUY2 }, |
| 184 | | { "yuy2x2", 1, 1, 2, 1, DRAW2_SCALEMODE_NEAREST, SDL_PIXELFORMAT_YUY2, yuv_RGB_to_YUY2X2 }, |
| 181 | /* SDL1.2 uses interpolation as well */ |
| 182 | { "yv12", 1, 1, 1, 1, DRAW2_SCALEMODE_BEST, SDL_PIXELFORMAT_YV12, yuv_RGB_to_YV12 }, |
| 183 | { "yv12x2", 1, 1, 2, 2, DRAW2_SCALEMODE_BEST, SDL_PIXELFORMAT_YV12, yuv_RGB_to_YV12X2 }, |
| 184 | { "yuy2", 1, 1, 1, 1, DRAW2_SCALEMODE_BEST, SDL_PIXELFORMAT_YUY2, yuv_RGB_to_YUY2 }, |
| 185 | { "yuy2x2", 1, 1, 2, 1, DRAW2_SCALEMODE_BEST, SDL_PIXELFORMAT_YUY2, yuv_RGB_to_YUY2X2 }, |
| 185 | 186 | { NULL } |
| 186 | 187 | }; |
| 187 | 188 | #endif |
| r243361 | r243362 | |
| 220 | 221 | return -1; |
| 221 | 222 | } |
| 222 | 223 | |
| 223 | | //============================================================ |
| 224 | | // drawsdl_init |
| 225 | | //============================================================ |
| 226 | 224 | |
| 227 | 225 | static osd_renderer *drawsdl_create(sdl_window_info *window) |
| 228 | 226 | { |
| 229 | | return global_alloc(sdl_info(window)); |
| 227 | const sdl_scale_mode *sm = &scale_modes[video_config.scale_mode]; |
| 228 | |
| 229 | // FIXME: QUALITY HINTS |
| 230 | #if (SDLMAME_SDL2) |
| 231 | return global_alloc(sdl_info(window, osd_renderer::FLAG_NONE)); |
| 232 | #else |
| 233 | return global_alloc(sdl_info(window, sm->m_extra_flags)); |
| 234 | #endif |
| 230 | 235 | } |
| 231 | 236 | |
| 237 | //============================================================ |
| 238 | // drawsdl_init |
| 239 | //============================================================ |
| 232 | 240 | |
| 233 | 241 | int drawsdl_init(sdl_draw_info *callbacks) |
| 234 | 242 | { |
| r243361 | r243362 | |
| 253 | 261 | } |
| 254 | 262 | |
| 255 | 263 | //============================================================ |
| 256 | | // drawsdl_destroy_all_textures |
| 257 | | //============================================================ |
| 258 | | |
| 259 | | void sdl_info::destroy_all_textures() |
| 260 | | { |
| 261 | | /* nothing to be done in soft mode */ |
| 262 | | } |
| 263 | | |
| 264 | | //============================================================ |
| 265 | 264 | // setup_texture for window |
| 266 | 265 | //============================================================ |
| 267 | 266 | |
| r243361 | r243362 | |
| 457 | 456 | else |
| 458 | 457 | m_extra_flags = 0; |
| 459 | 458 | |
| 460 | | /* set hints ... */ |
| 461 | | SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, sm->sdl_scale_mode); |
| 462 | | |
| 463 | 459 | // create the SDL window |
| 464 | 460 | // soft driver also used | SDL_WINDOW_INPUT_GRABBED | SDL_WINDOW_MOUSE_FOCUS |
| 465 | 461 | m_extra_flags |= (window().fullscreen() ? |
| r243361 | r243362 | |
| 519 | 515 | |
| 520 | 516 | // create renderer |
| 521 | 517 | |
| 518 | /* set hints ... */ |
| 519 | SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, sm->sdl_scale_mode); |
| 520 | |
| 521 | |
| 522 | 522 | if (video_config.waitvsync) |
| 523 | 523 | m_sdl_renderer = SDL_CreateRenderer(window().m_sdl_window, -1, SDL_RENDERER_PRESENTVSYNC | SDL_RENDERER_ACCELERATED); |
| 524 | 524 | else |
| r243361 | r243362 | |
| 557 | 557 | #else |
| 558 | 558 | m_extra_flags = (window().fullscreen() ? SDL_FULLSCREEN : SDL_RESIZABLE); |
| 559 | 559 | |
| 560 | | m_extra_flags |= sm->m_extra_flags; |
| 560 | if (this->check_flag(FLAG_NEEDS_DOUBLEBUF)) |
| 561 | m_extra_flags |= SDL_DOUBLEBUF; |
| 562 | if (this->check_flag(FLAG_NEEDS_ASYNCBLIT)) |
| 563 | m_extra_flags |= SDL_ASYNCBLIT; |
| 561 | 564 | |
| 562 | | if (check_flag(FLAG_NEEDS_OPENGL)) |
| 565 | if (this->check_flag(FLAG_NEEDS_OPENGL)) |
| 563 | 566 | { |
| 564 | 567 | m_extra_flags |= SDL_DOUBLEBUF | SDL_OPENGL; |
| 565 | 568 | SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 ); |
| r243361 | r243362 | |
| 707 | 710 | } |
| 708 | 711 | |
| 709 | 712 | //============================================================ |
| 713 | // drawsdl_destroy_all_textures |
| 714 | //============================================================ |
| 715 | |
| 716 | void sdl_info::destroy_all_textures() |
| 717 | { |
| 718 | /* nothing to be done in soft mode */ |
| 719 | } |
| 720 | |
| 721 | |
| 722 | //============================================================ |
| 710 | 723 | // sdl_info::draw |
| 711 | 724 | //============================================================ |
| 712 | 725 | |