diff options
Diffstat (limited to 'src/output.cpp')
-rw-r--r-- | src/output.cpp | 119 |
1 files changed, 0 insertions, 119 deletions
diff --git a/src/output.cpp b/src/output.cpp deleted file mode 100644 index 94f6c89..0000000 --- a/src/output.cpp +++ /dev/null @@ -1,119 +0,0 @@ -#include "output.h" -#include "stdio.h" - - -//DEVUTG -#include <inttypes.h> - -Output::Output(Display *dpy, XRRScreenResources *resources, RROutput output) - :dpy(dpy), resources(resources), ID(output) -{ - -} - - -bool Output::hasEDID() const -{ - int nprop; - Atom *props = XRRListOutputProperties(dpy, ID, &nprop); - Atom actual_type; - int actual_format; - unsigned long nitems, bytes_after; - unsigned char *prop; - XRRPropertyInfo *propinfo; - int bytes_per_item, k; - - for (int i = 0; i < nprop; ++i) { - char *atom_name = XGetAtomName (dpy, props[i]); - if ( strcmp (atom_name, "EDID") == 0) - { - fprintf (stderr, "EDIDCHECK"); - XRRGetOutputProperty (dpy, ID, props[i], - 0, 100, False, False, - AnyPropertyType, - &actual_type, &actual_format, - &nitems, &bytes_after, &prop); - - propinfo = XRRQueryOutputProperty(dpy, ID, props[i]); - bytes_per_item = actual_format / 8; - - fprintf (stderr, "\t%s: ", atom_name); - - for (k = 0; k < nitems; k++) - { - if (k != 0) - { - if ((k % 16) == 0) - { - fprintf (stderr, "\n\t\t"); - } - } - const uint8_t *val = prop + (k * bytes_per_item); - fprintf (stderr, "%d02", *val); - - } - free(propinfo); - return true; - } - } - -} - - - -bool Output::isProjector() const -{ - XRROutputInfo *info = XRRGetOutputInfo (dpy, resources, ID); - bool result = ( info->mm_height == 0 && info->mm_width == 0 ); - XRRFreeOutputInfo(info); - return result; -} - -Resolution Output::getCurrentMode() const -{ - XRROutputInfo *OutputInfo = XRRGetOutputInfo (dpy, resources, ID); - XRRCrtcInfo *CrtcInfo = XRRGetCrtcInfo(dpy, resources, OutputInfo->crtc); - Resolution result = { CrtcInfo->width, CrtcInfo->height }; - XRRFreeCrtcInfo(CrtcInfo); - XRRFreeOutputInfo(OutputInfo); - return result; -} - - -Resolution Output::getPreferredMode() const -{ - XRROutputInfo *OutputInfo = XRRGetOutputInfo (dpy, resources, ID); - RRMode preferred = OutputInfo->modes[OutputInfo->npreferred]; - XRRFreeOutputInfo(OutputInfo); - return getResolution(preferred); -} - - -QSet<Resolution> Output::getSupportedModes() const -{ - QSet<Resolution> result; - XRROutputInfo *info = XRRGetOutputInfo (dpy, resources, ID); - for (int i = 0; i < info->nmode; ++i) - result.insert(getResolution(info->modes[i])); - XRRFreeOutputInfo(info); - return result; -} - - -Resolution Output::addMode(Resolution) const -{ - // TODO - return Resolution(); -} - -Resolution Output::getResolution(RRMode mode) const -{ - for (int i = 0; i < resources->nmode; ++i) { - if ( resources->modes[i].id == mode ) { - Resolution res = {resources->modes[i].width, resources->modes[i].height}; - return res; - } - } - fprintf ( stderr, "Could not find a mode for the requested XID %d", (int)mode); - exit(1); -} |