Problema con pantalla completa en SDL2(solucionado)

Iniciado por jorge245, 21 Marzo 2018, 23:46 PM

0 Miembros y 1 Visitante están viendo este tema.

jorge245


MAFUS

A ver, qué tal esto...
while(!quit){
SDL_BlitSurface(fondo,NULL,windowSurface,NULL);
SDL_Flip(windowSurface);
while(SDL_PollEvent(&tecla)) {
  if (tecla.type == SDL_QUIT) {
    quit = true;
  }
}


Flip lo que hace es llevar la imagen que hay en el la superficie al hardware. A ver si era eso.


jorge245

enlace para descargar la carpeta con la magen y programa .solo funciona en linux
https://drive.google.com/open?id=1urwyoX6Rgus2tKi4LU3n3EpexGfZSlfW

MAFUS

No tengo Linux ni SDL.

Se me ocurre que a lo mejor no sale del bucle de eventos.
Cambia el while por un if, a ver que ocurre. Si ya no funciona así entonces es que fondo no se redibuja a windowSurface.

jorge245

No, la imagen si se presenta en pantalla. es solo cuando minimizo que deja de presentarla ,ubuntu presenta una captura de pantalla del  escritorio en la ventana si esta no tiene ninguna imagen, y así pasa al minimizar y entrar con pantalla completa.

MAFUS

Has cambiado el while por el if?
Ya, y al pasarle con otra ventana por encima se queda dibujada el trazo de esa pantalla?

jorge245

si, // ! u+21
// &  u+26
// u+5c0 ׀
// %  u+25
// Ʃ  u+1a9
#include<iostream>
#include"milib.h"
#include<SDL2/SDL.h>
#include<SDL2/SDL_image.h>
using namespace std;


int main(){
bool quit=false;
SDL_Init(SDL_INIT_EVERYTHING);
SDL_Window *window = SDL_CreateWindow("pst",SDL_WINDOWPOS_UNDEFINED,SDL_WINDOWPOS_UNDEFINED,0, 0,SDL_WINDOW_FULLSCREEN_DESKTOP);
SDL_Surface*windowSurface=SDL_GetWindowSurface(window);
SDL_Surface*fondo=IMG_Load("fondo.png");
SDL_Event tecla;
SDL_BlitSurface(fondo,NULL,windowSurface,NULL);
while(!quit){
SDL_BlitSurface(fondo,NULL,windowSurface,NULL);
SDL_UpdateWindowSurface(window);
if(SDL_PollEvent(&tecla)) {
if (tecla.type == SDL_QUIT) {
quit=true;
}
}
}
return 0;
}


y con lo otro, no porque es pantalla completa así que no me es posible.

jorge245

Creo que ese problema me ara abandonar SDL. :,(

MAFUS

Buscando encontré esto: https://discourse.libsdl.org/t/restore-sdl-app-previously-minimized-after-screen-saber/20127

Al parecer había un bug en libsdl 2.0.1 que no reconocía cuando se minimizaba la pantalla. Si usas esa versión cámbiate a una más moderna.