X11Util.cpp (1277B)
1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- 2 * vim: sw=2 ts=8 et : 3 */ 4 /* This Source Code Form is subject to the terms of the Mozilla Public 5 * License, v. 2.0. If a copy of the MPL was not distributed with this 6 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 7 8 #include "X11Util.h" 9 #include "nsDebug.h" // for NS_ASSERTION, etc 10 #include "MainThreadUtils.h" // for NS_IsMainThread 11 12 namespace mozilla { 13 14 void FindVisualAndDepth(Display* aDisplay, VisualID aVisualID, Visual** aVisual, 15 int* aDepth) { 16 const Screen* screen = DefaultScreenOfDisplay(aDisplay); 17 18 for (int d = 0; d < screen->ndepths; d++) { 19 Depth* d_info = &screen->depths[d]; 20 for (int v = 0; v < d_info->nvisuals; v++) { 21 Visual* visual = &d_info->visuals[v]; 22 if (visual->visualid == aVisualID) { 23 *aVisual = visual; 24 *aDepth = d_info->depth; 25 return; 26 } 27 } 28 } 29 30 NS_ASSERTION(aVisualID == X11None, "VisualID not on Screen."); 31 *aVisual = nullptr; 32 *aDepth = 0; 33 } 34 35 void FinishX(Display* aDisplay) { 36 unsigned long lastRequest = NextRequest(aDisplay) - 1; 37 if (lastRequest == LastKnownRequestProcessed(aDisplay)) return; 38 39 XSync(aDisplay, X11False); 40 } 41 42 } // namespace mozilla