Android OpenGL: taxa de proporção louca após suspensão

Se eu apertar o botão liga / desliga em meu telefone Android (ou esperar o tempo limite) e o telefone entrar no modo de hibernação, depois de acordar novamente, a proporção da tela ficará fora de controle.

Capturas de tela:

quebrado

http://i.imgur.com/4C6ID.png

correto

http://i.imgur.com/CNAV0.png

em GameActivity.onCreate ()

    // Grab display info
    DisplayMetrics dm = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(dm);
    ACTUAL_SCREEN_WIDTH = (int) dm.widthPixels;
    ACTUAL_SCREEN_HEIGHT = (int) dm.heightPixels;
    ACTUAL_DENSITY = dm.density;

    double scale = ((double) MainMenuActivity.resolutionScale / 100.0);
    SCREEN_WIDTH = (int) (ACTUAL_SCREEN_WIDTH * scale);
    SCREEN_HEIGHT = (int) (ACTUAL_SCREEN_HEIGHT * scale);
    DENSITY = ACTUAL_DENSITY * scale;

    // Setup graphics
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    surface_view = new GLSurfaceView(this);

    if (SCREEN_WIDTH != ACTUAL_SCREEN_WIDTH
            || SCREEN_HEIGHT != ACTUAL_SCREEN_HEIGHT)
        surface_view.getSurfaceHolder().setFixedSize(SCREEN_WIDTH,
                SCREEN_HEIGHT);

Estou recarregando tudo corretamente em GLSurfaceView (ou seja, ir para casa e voltar ao jogo recarrega as texturas, etc).

Eu imprimi a orientação em onWindowFocusChanged e é paisagem (como esperado).

O problema não aparece se eu não usar setFixedSize (ou seja, se resolutionScale for 100). Além disso, o problema desaparece se outra janela aparecer na frente do jogo (como a janela de preferências) e você retornar o jogo.

Agradecemos antecipadamente. Tenho tentado coisas aleatórias por cerca de uma hora desde que as pesquisas terminaram.

7
задан Sam 28 November 2011 в 08:14
поделиться