#include #include #include #include #include class xDisplay { public: xDisplay() { _disp = XOpenDisplay(NULL); } ~xDisplay() { if (_disp != NULL) { XCloseDisplay(_disp); _disp = NULL; } } operator Display* () { return _disp; } private: Display* _disp; }; // Display xDisplay display; void* tproc(void* param) { XEvent ev; while (1) { XNextEvent(display, &ev); } return 0; } void create_thread() { pthread_t pt; pthread_create(&pt, NULL, tproc, NULL); } void alloc_colors() { Colormap cmap = DefaultColormap((Display*)display, DefaultScreen((Display*)display)); unsigned long pixels[1024]; unsigned int npixels = 54; while (1) { if (XAllocColorCells(display, cmap, False, NULL, 0, pixels, npixels) == 0) { break; } XFreeColors(display, cmap, pixels, npixels, 0); npixels ++; } } int main() { int count = 0; XInitThreads(); create_thread(); alloc_colors(); }