80 static {
81 long display = XToolkit.getDisplay();
82 XToolkit.awtLock();
83 try {
84 numScreens = XlibWrapper.ScreenCount(display);
85 } finally {
86 XToolkit.awtUnlock();
87 }
88 XA_MANAGER = XAtom.get("MANAGER");
89 for (int screen = 0; screen < numScreens ; screen ++) {
90 initScreen(display,screen);
91 }
92
93 selectionMap = new HashMap<>();
94 }
95
96 static void initScreen(long display, final int screen) {
97 XToolkit.awtLock();
98 try {
99 long root = XlibWrapper.RootWindow(display,screen);
100 XlibWrapper.XSelectInput(display, root, XConstants.StructureNotifyMask);
101 XToolkit.addEventDispatcher(root,
102 new XEventDispatcher() {
103 public void dispatchEvent(XEvent ev) {
104 processRootEvent(ev, screen);
105 }
106 });
107
108 } finally {
109 XToolkit.awtUnlock();
110 }
111 }
112
113
114 public int getNumberOfScreens() {
115 return numScreens;
116 }
117
118 void select(long extra_mask) {
119 eventMask = extra_mask;
120 for (int screen = 0; screen < numScreens ; screen ++) {
|
80 static {
81 long display = XToolkit.getDisplay();
82 XToolkit.awtLock();
83 try {
84 numScreens = XlibWrapper.ScreenCount(display);
85 } finally {
86 XToolkit.awtUnlock();
87 }
88 XA_MANAGER = XAtom.get("MANAGER");
89 for (int screen = 0; screen < numScreens ; screen ++) {
90 initScreen(display,screen);
91 }
92
93 selectionMap = new HashMap<>();
94 }
95
96 static void initScreen(long display, final int screen) {
97 XToolkit.awtLock();
98 try {
99 long root = XlibWrapper.RootWindow(display,screen);
100 XWindowAttributes wattr = new XWindowAttributes();
101 try {
102 XlibWrapper.XGetWindowAttributes(display, root, wattr.pData);
103 XlibWrapper.XSelectInput(display, root,
104 XConstants.StructureNotifyMask |
105 wattr.get_your_event_mask());
106 } finally {
107 wattr.dispose();
108 }
109 XToolkit.addEventDispatcher(root,
110 new XEventDispatcher() {
111 public void dispatchEvent(XEvent ev) {
112 processRootEvent(ev, screen);
113 }
114 });
115
116 } finally {
117 XToolkit.awtUnlock();
118 }
119 }
120
121
122 public int getNumberOfScreens() {
123 return numScreens;
124 }
125
126 void select(long extra_mask) {
127 eventMask = extra_mask;
128 for (int screen = 0; screen < numScreens ; screen ++) {
|