Ejemplo n.º 1
0
 VideoModeList getListOfVideoModes() 
 {
     VideoModeList list;
     for (int i=0; i < int(NUMBER_OF_VIDEOMODE); i++) 
     {
         list.push_back(VideoMode(i));
     }
     return list;
 }
Ejemplo n.º 2
0
        static const VideoModeList & GetSupportedModes()
        {
            static VideoModeList vml;
            if ( vml.empty() )
            {
                GLFWvidmode modes[256];
                int count =  glfwGetVideoModes(modes, 256);
                vml.reserve(count);

                for (int i = 0; i < count; ++i)
                {
                    VideoMode vm;
                    vm.width            = modes[i].Width;
                    vm.height           = modes[i].Height;
                    vm.red_bits         = modes[i].RedBits;
                    vm.green_bits       = modes[i].GreenBits;
                    vm.blue_bits        = modes[i].BlueBits;
                    vml.push_back(vm);
                }
            }
            return vml;
        }
Ejemplo n.º 3
0
void RenderContextImplGLX::EnumVideoModes(VideoModeList& videoModes) {
    // check for xrandr support
    videoModes.clear();
    bool fallback = false;
    if ((xrandrSupported = IsXRandrSupported())) {
        XRRScreenSize* screenSize;
        int nsizes = 0;

        Trace("XRANDR is enabled");
        screenSize = XRRSizes(display, screenIndex, &nsizes);
        if (!nsizes)
            fallback = true;
        videoModes.reserve((size_t) nsizes);
        for (int i = 0; i < nsizes; ++i) {
            VideoMode vmode;
            vmode.width = uint16(screenSize[i].width);
            vmode.height = uint16(screenSize[i].height);

            int nrates;
            short* rates = XRRRates(display, screenIndex, i, &nrates);
            for (int j = 0; j < nrates; ++j) {
                vmode.refreshRate = uint16(rates[j]);
                videoModes.push_back(vmode);
            }
        }
        Window root = RootWindow(display, screenIndex);
        Rotation rotation;
        XRRScreenConfiguration *conf = XRRGetScreenInfo(display, root);
        int currsize = XRRConfigCurrentConfiguration(conf, &rotation);
        VideoMode current = VideoMode(screenSize[currsize].width,
                                      screenSize[currsize].height, XRRConfigCurrentRate(conf));
        std::sort(videoModes.begin(), videoModes.end());
        auto it = std::find(videoModes.begin(), videoModes.end(), current);
        if (it != videoModes.end())
            baseContext->SetOriginalVideoMode((uint32)(it - videoModes.begin()));
        else {
            videoModes.push_back(current);
            baseContext->SetOriginalVideoMode((uint32)videoModes.size() - 1);
        }
        XRRFreeScreenConfigInfo(conf);
    } /* check vid modes*/
    if (fallback || !videoModes.size()) {
        VideoMode vmode;
        vmode.width = DisplayWidth(display, screenIndex);
        vmode.height = DisplayHeight(display, screenIndex);
        vmode.refreshRate = 0;
        videoModes.push_back(vmode);
        baseContext->SetOriginalVideoMode((uint32)videoModes.size() - 1);
        Error("Viewmode set in fallback mode!");
    }
}