Avogadro
1.1.0
|
00001 /********************************************************************** 00002 PythonThread - Handle python threads 00003 00004 Copyright (C) 2009 by Tim Vandermeersch 00005 00006 This file is part of the Avogadro molecular editor project. 00007 For more information, see <http://avogadro.openmolecules.net/> 00008 00009 Avogadro is free software; you can redistribute it and/or modify 00010 it under the terms of the GNU General Public License as published by 00011 the Free Software Foundation; either version 2 of the License, or 00012 (at your option) any later version. 00013 00014 Avogadro is distributed in the hope that it will be useful, 00015 but WITHOUT ANY WARRANTY; without even the implied warranty of 00016 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00017 GNU General Public License for more details. 00018 00019 You should have received a copy of the GNU General Public License 00020 along with this program; if not, write to the Free Software 00021 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 00022 02110-1301, USA. 00023 ***********************************************************************/ 00024 00025 #ifndef PYTHONTHREAD_H 00026 #define PYTHONTHREAD_H 00027 00028 #include <avogadro/global.h> 00029 #include <boost/python.hpp> 00030 00031 namespace Avogadro { 00032 00033 class PythonThread 00034 { 00035 public: 00036 PythonThread() { gstate = PyGILState_Ensure(); } 00037 ~PythonThread() { if (gstate == PyGILState_LOCKED) PyGILState_Release(gstate); } 00038 private: 00039 PyGILState_STATE gstate; 00040 }; 00041 00042 } // namespace 00043 00044 #endif