Como obter corretamente rotação de tela programaticamente?

0

Eu preciso obter programaticamente a rotação da tela. Estou usando o Qt e a extensão X XRandr. Estou tentando o seguinte:

Display *dpy;
Window root;
XRRScreenConfiguration *conf;
Rotation rotation;

int screen;

dpy = QX11Info::display();
root =  QX11Info::appRootWindow();
conf = XRRGetScreenInfo(dpy, root);
screen = DefaultScreen(dpy);
XRRRotations(dpy, screen, &rotation);

qDebug() << "CURRENT ROTATION:" << rotation;

O problema é que, independentemente da orientação atual da tela, configurada através do aplicativo Configurações de exibição do Ubuntu, a saída CURRENT ROTATION é sempre 1.

Alguém sabe por quê?

Obrigado

    
por Nuno Santos 18.02.2013 / 10:30

1 resposta

1

Eu finalmente encontrei a resposta para isso. Estou usando o Qt. Algumas das chamadas são do Qt para obter a janela e a tela do X11.

Display *dpy;
Window root = this->winId();
dpy = QX11Info::display();

XRRScreenResources *scrres = XRRGetScreenResources(dpy, root);
XRRCrtcInfo *crtcInfo = XRRGetCrtcInfo(dpy, scrres, *scrres->crtcs);

crtcInfo->rotation can be 1, 2, 4, or 8

Espero que isso ajude alguém no futuro.

    
por Nuno Santos 20.02.2013 / 13:31