// stop event input
XSelectInput(top_level->display, this->win, 0);
motion_events = resize_events = translation_events = 0;
+#ifndef SINGLE_THREAD
top_level->dequeue_events(win);
-
+#endif
if(top_level->active_menubar == this) top_level->active_menubar = 0;
if(top_level->active_popup_menu == this) top_level->active_popup_menu = 0;
if(top_level->active_subwindow == this) top_level->active_subwindow = 0;
return ret;
}
-pthread_t locking_task = -1;
+pthread_t locking_task = (pthread_t)-1L;
int locking_event = -1;
int locking_message = -1;
// return top_level->next_repeat_id++;
// }
+XEvent *BC_WindowBase::new_xevent()
+{
+ XEvent *event = new XEvent;
+ memset(event, 0, sizeof(*event));
+ return event;
+}
#ifndef SINGLE_THREAD
int BC_WindowBase::arm_repeat(int64_t duration)
{
- XEvent *event = new XEvent;
+ XEvent *event = new_xevent();
XClientMessageEvent *ptr = (XClientMessageEvent*)event;
ptr->type = ClientMessage;
ptr->message_type = RepeaterXAtom;
int BC_WindowBase::send_custom_xatom(xatom_event *event)
{
- XEvent *myevent = new XEvent;
+#ifndef SINGLE_THREAD
+ XEvent *myevent = new_xevent();
XClientMessageEvent *ptr = (XClientMessageEvent*)myevent;
ptr->type = ClientMessage;
ptr->message_type = event->message_type;
ptr->data.l[4] = event->data.l[4];
put_event(myevent);
+#endif
return 0;
}
#else // SINGLE_THREAD
init_wait();
if( !event_thread ) return;
- XEvent *event = new XEvent;
+ XEvent *event = new_xevent();
XClientMessageEvent *ptr = (XClientMessageEvent*)event;
event->type = ClientMessage;
ptr->message_type = SetDoneXAtom;
// it is deleted.
// Deletion of event_thread is done at the end of BC_WindowBase::run_window() - by calling the destructor
put_event(event);
- }
#endif
+ }
}
void BC_WindowBase::close(int return_value)