diff --git a/panda/src/pgui/pgButton.cxx b/panda/src/pgui/pgButton.cxx index 5df208a64b..527e1d4aef 100644 --- a/panda/src/pgui/pgButton.cxx +++ b/panda/src/pgui/pgButton.cxx @@ -69,6 +69,7 @@ PGButton(const PGButton ©) : //////////////////////////////////////////////////////////////////// PandaNode *PGButton:: make_copy() const { + LightReMutexHolder holder(_lock); return new PGButton(*this); } @@ -80,6 +81,7 @@ make_copy() const { //////////////////////////////////////////////////////////////////// void PGButton:: enter_region(const MouseWatcherParameter ¶m) { + LightReMutexHolder holder(_lock); if (get_active()) { set_state(_button_down ? S_depressed : S_rollover); } @@ -94,6 +96,7 @@ enter_region(const MouseWatcherParameter ¶m) { //////////////////////////////////////////////////////////////////// void PGButton:: exit_region(const MouseWatcherParameter ¶m) { + LightReMutexHolder holder(_lock); if (get_active()) { set_state(S_ready); } @@ -109,6 +112,7 @@ exit_region(const MouseWatcherParameter ¶m) { //////////////////////////////////////////////////////////////////// void PGButton:: press(const MouseWatcherParameter ¶m, bool background) { + LightReMutexHolder holder(_lock); if (has_click_button(param.get_button())) { if (get_active()) { _button_down = true; @@ -127,6 +131,7 @@ press(const MouseWatcherParameter ¶m, bool background) { //////////////////////////////////////////////////////////////////// void PGButton:: release(const MouseWatcherParameter ¶m, bool background) { + LightReMutexHolder holder(_lock); if (has_click_button(param.get_button())) { _button_down = false; if (get_active()) { @@ -149,6 +154,7 @@ release(const MouseWatcherParameter ¶m, bool background) { //////////////////////////////////////////////////////////////////// void PGButton:: click(const MouseWatcherParameter ¶m) { + LightReMutexHolder holder(_lock); PGMouseWatcherParameter *ep = new PGMouseWatcherParameter(param); string event = get_click_event(param.get_button()); play_sound(event); @@ -170,6 +176,7 @@ click(const MouseWatcherParameter ¶m) { //////////////////////////////////////////////////////////////////// void PGButton:: setup(const string &label, float bevel) { + LightReMutexHolder holder(_lock); clear_state_def(S_ready); clear_state_def(S_depressed); clear_state_def(S_rollover); @@ -226,6 +233,7 @@ setup(const string &label, float bevel) { void PGButton:: setup(const NodePath &ready, const NodePath &depressed, const NodePath &rollover, const NodePath &inactive) { + LightReMutexHolder holder(_lock); clear_state_def(S_ready); clear_state_def(S_depressed); clear_state_def(S_rollover); @@ -246,6 +254,7 @@ setup(const NodePath &ready, const NodePath &depressed, //////////////////////////////////////////////////////////////////// void PGButton:: set_active(bool active) { + LightReMutexHolder holder(_lock); if (active != get_active()) { PGItem::set_active(active); set_state(active ? S_ready : S_inactive); @@ -262,6 +271,7 @@ set_active(bool active) { //////////////////////////////////////////////////////////////////// bool PGButton:: add_click_button(const ButtonHandle &button) { + LightReMutexHolder holder(_lock); return _click_buttons.insert(button).second; } @@ -276,6 +286,7 @@ add_click_button(const ButtonHandle &button) { //////////////////////////////////////////////////////////////////// bool PGButton:: remove_click_button(const ButtonHandle &button) { + LightReMutexHolder holder(_lock); return (_click_buttons.erase(button) != 0); } @@ -288,6 +299,7 @@ remove_click_button(const ButtonHandle &button) { //////////////////////////////////////////////////////////////////// bool PGButton:: has_click_button(const ButtonHandle &button) { + LightReMutexHolder holder(_lock); return (_click_buttons.count(button) != 0); }