-#ifdef XORG_USED
-
- video::IVideoDriver *v_driver = device->getVideoDriver();
-
- video::IImageLoader *image_loader = NULL;
- u32 cnt = v_driver->getImageLoaderCount();
- for (u32 i = 0; i < cnt; i++) {
- if (v_driver->getImageLoader(i)->isALoadableFileExtension(icon_file.c_str())) {
- image_loader = v_driver->getImageLoader(i);
- break;
- }
- }
-
- if (!image_loader) {
- warningstream << "Could not find image loader for file '"
- << icon_file << "'" << std::endl;
- return false;
- }
-
- io::IReadFile *icon_f = device->getFileSystem()->createAndOpenFile(icon_file.c_str());
-
- if (!icon_f) {
- warningstream << "Could not load icon file '"
- << icon_file << "'" << std::endl;
- return false;
- }
-
- video::IImage *img = image_loader->loadImage(icon_f);
-
- if (!img) {
- warningstream << "Could not load icon file '"
- << icon_file << "'" << std::endl;
- icon_f->drop();
- return false;
- }
-
- u32 height = img->getDimension().Height;
- u32 width = img->getDimension().Width;
-
- size_t icon_buffer_len = 2 + height * width;
- long *icon_buffer = new long[icon_buffer_len];
-
- icon_buffer[0] = width;
- icon_buffer[1] = height;
-
- for (u32 x = 0; x < width; x++) {
- for (u32 y = 0; y < height; y++) {
- video::SColor col = img->getPixel(x, y);
- long pixel_val = 0;
- pixel_val |= (u8)col.getAlpha() << 24;
- pixel_val |= (u8)col.getRed() << 16;
- pixel_val |= (u8)col.getGreen() << 8;
- pixel_val |= (u8)col.getBlue();
- icon_buffer[2 + x + y * width] = pixel_val;
- }
- }
-
- img->drop();
- icon_f->drop();
-
- const video::SExposedVideoData &video_data = v_driver->getExposedVideoData();
-
- Display *x11_dpl = (Display *)video_data.OpenGLLinux.X11Display;
-
- if (x11_dpl == NULL) {
- warningstream << "Could not find x11 display for setting its icon."
- << std::endl;
- delete [] icon_buffer;
+ // N.B. This function checks *only* for /dev/urandom, because on most
+ // common OSes it is non-blocking, whereas /dev/random is blocking, and it
+ // is exceptionally uncommon for there to be a situation where /dev/random
+ // exists but /dev/urandom does not. This guesswork is necessary since
+ // random devices are not covered by any POSIX standard...
+ FILE *fp = fopen("/dev/urandom", "rb");
+ if (!fp)