×
Namespaces

Variants
Actions

Acesso Direto à Tela (DSA)

From Nokia Developer Wiki
Jump to: navigation, search
Article Metadata

Artigo
Tradução:
Por lpvalente
Última alteração feita por hamishwillee em 09 Dec 2011


Contents

Introdução

Acesso direto à tela (do Inglês DSA - Direct Screen Access) é uma maneira de se desenhar na tela sem utilizar o servidor de janelas. Essa alternativa é mais eficiente pois evita a comunicação com o servidor, sendo recomendada para aplicações que lidam com vídeo, e jogos. Entretanto, a comunicação com o servidor de janelas é necessária em alguns momentos para se evitar acessos inválidos a dados de outras aplicações. A classe que implementa o acesso direto à tela (CDirectScreenAccess) é implementada como um objeto ativo:

class CDirectScreenAccess : public CActive;

A seguir, alguns dos membros definidos nessa classe.

DrawingRegion()

Retorna qual é a área da tela onde as operações de desenho devem ser feitas.

inline RRegion *DrawingRegion();

Gc()

Retorna o contexto gráfico que será usado para se desenhar na tela. Esse contexto é criado pela classe ao se iniciar o acesso direto através de StartL(). As partes da tela onde serão feitos os desenhos devem ser especificadas como coordenadas da janela, e a área permitida para desenho é determinada pelo objeto RRegion obtido por DrawingRegion().

inline CFbsBitGc *Gc();

NewL()

Cria uma instância da classe de acesso direto à tela, e a adiciona ao escalonador ativo atual.

static CDirectScreenAccess *NewL (RWsSession &aWs, CWsScreenDevice 
&aScreenDevice, RWindowBase &aWin, MDirectScreenAccess &aAbort);

ScreenDevice()

Recupera a tela onde as operações de desenho serão realizadas.

inline CFbsScreenDevice *&ScreenDevice();

StartL()

Informa o servidor de janelas que o acesso direto à tela será iniciado, de modo que um contexto gráfico será criado para que seja possível desenhar na tela.

void StartL();

Observações

A interface MDirectScreenAccess deve ser usada para reiniciar o acesso direto à tela, quando for necessário.

virtual void Restart (RDirectScreenAccess::TTerminationReasons aReason)=0;

Essa função é chamada pelo servidor de janelas para indicar que o acesso direto pode ser reiniciado.

Essa função deve chamar o método StartL() da classe CDirectScreenAccess. É importante observar que esse método pode gerar um abandono ("leave"), que deve ser capturado. Caso um abandono seja gerado, significa que o acesso direto não pode ser reiniciado. Quando o método StartL() for executado, a área permitida para desenho será recalculada. Isso significa que se o acesso foi interrompido porque outra janela foi sobreposta à janela que estava sendo desenhada, essa janela sobreposta não será sobrescrita quando o acesso direto for reiniciado.

Links

This page was last modified on 9 December 2011, at 07:45.
122 page views in the last 30 days.