#1 Le 01/11/2007, à 16:58
- Kor
Obtenir la frequence en Hz des modes graphiques X11 disponibles
Bonjour,
J'utilise la fonction XF86VidModeGetAllModeLines me permettant d'obtenir l'ensemble des modes graphiques disponibles par le serveur X11, malheureusement je n'ai aucune information concernant la frequence de rafraichissement en Hz pour chacun de ces modes.
Quelqu'un connait-il la solution a mon probleme ?
Merci bien
Hors ligne
#2 Le 01/11/2007, à 23:24
- foustala
Re : Obtenir la frequence en Hz des modes graphiques X11 disponibles
cela depend du moniteur, tu peux tester le bus ddc.
sudo ddcprobe
Hors ligne
#3 Le 02/11/2007, à 10:22
- robrob
Re : Obtenir la frequence en Hz des modes graphiques X11 disponibles
J'ai regardé les sources de Kde (l'app Krandr qui permet de configurer l'affichage):
http://websvn.kde.org/branches/KDE/3.5/kdebase/kcontrol/randr/randr.cpp?revision=603026&view=markup
Ils utilisent les fonctions de XRandr, dont j'ai trouvé une liste ici:
http://www.squarebox.co.uk/cgi-squarebox/manServer/usr/X11R6/man/man3/Xrandr.3x
Regarde notamment XRRRates qui retourne les fréquences dispo pour une taille d'écran donnée. Il me semble qu'il faut d'abord utiliser XRRSizes pour connaître les résolutions dispos (La resolution étant appelée par son index dans XRRRates).
Hors ligne
#4 Le 03/11/2007, à 00:03
- robrob
Re : Obtenir la frequence en Hz des modes graphiques X11 disponibles
Par curiosité j'ai testé les 2 fonctions citées au dessus. Par contre, je n'ai pas trouvé comment récupérer l'index du screen courant...donc je l'ai mis à 0
(chez moi, les resolutions retournées sont bonnes mais les fréquences sont bizares)
#include <stdio.h>
#include <X11/Xlib.h>
#include <X11/extensions/Xrandr.h>
int main(void)
{
Display *d;
int screen;
int n_resolution;
XRRScreenSize *resolution;
int n_frequence;
short *frequence;
int i,j;
// recupere le display courant
d=XOpenDisplay(NULL);
if (d==NULL)
{
printf("Echec de XOpenDisplay\n");
return 0;
}
// recupere le screen courant...ou pas :o)
screen=0;
// recupere les resolutions
resolution=XRRSizes(d,screen, &n_resolution);
for(i=0;i<n_resolution;i++)
{
// recupere les frequences
frequence=XRRRates(d, screen,i, &n_frequence);
printf("resolution (%d) : %d x %d\n",i,resolution[i].width, resolution[i].height);
for(j=0;j<n_frequence;j++)
printf("-> frequence (%d) : %dHz\n",j,frequence[j]);
}
return 1;
}
Hors ligne
#5 Le 07/11/2007, à 21:37
- Kor
Re : Obtenir la frequence en Hz des modes graphiques X11 disponibles
Par curiosité j'ai testé les 2 fonctions citées au dessus. Par contre, je n'ai pas trouvé comment récupérer l'index du screen courant...donc je l'ai mis à 0
tu peux faire ceci pour récupérer le screen courant :
screen = DefaultScreen(d);
(chez moi, les resolutions retournées sont bonnes mais les fréquences sont bizares)
Chez moi aussi c'est étrange, du genre 1280x1024 en 50 et 53Hz !!!
En tout cas merci pour cette aide
Hors ligne
#6 Le 10/11/2007, à 21:08
- robrob
Re : Obtenir la frequence en Hz des modes graphiques X11 disponibles
En me promenant sur le forum, j'ai trouvé la raison du pourquoi de ces fréquences bizares. C'est expliqué ici:
http://forum.ubuntu-fr.org/viewtopic.php?id=164833
Hors ligne