00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include "FbRootWindow.hh"
00025 #include "App.hh"
00026
00027 #include <X11/Xutil.h>
00028
00029 FbRootWindow::FbRootWindow(int screen_num):
00030 FbTk::FbWindow(RootWindow(FbTk::App::instance()->display(), screen_num)),
00031 m_visual(0),
00032 m_colormap(0) {
00033
00034 Display *disp = FbTk::App::instance()->display();
00035
00036
00037
00038 XVisualInfo vinfo_template, *vinfo_return;
00039 int vinfo_nitems;
00040
00041 vinfo_template.screen = screen_num;
00042 vinfo_template.c_class = TrueColor;
00043 if ((vinfo_return = XGetVisualInfo(disp,
00044 VisualScreenMask | VisualClassMask,
00045 &vinfo_template, &vinfo_nitems)) &&
00046 vinfo_nitems > 0) {
00047
00048 for (int i = 0; i < vinfo_nitems; i++) {
00049 if (DefaultDepth(disp, screen_num) < vinfo_return[i].depth)
00050 m_visual = vinfo_return[i].visual;
00051 }
00052
00053 XFree(vinfo_return);
00054 }
00055
00056 if (m_visual) {
00057 m_colormap = XCreateColormap(disp, window(),
00058 m_visual, AllocNone);
00059 } else {
00060 m_visual = DefaultVisual(disp, screen_num);
00061 m_colormap = DefaultColormap(disp, screen_num);
00062 }
00063 }
00064
00065 void FbRootWindow::updateGeometry() {
00066 FbWindow::updateGeometry();
00067 }