File indexing completed on 2024-04-28 16:01:32

0001 /******************************************************************************
0002  * This file is part of the libqgit2 library
0003  *
0004  * This library is free software; you can redistribute it and/or
0005  * modify it under the terms of the GNU Lesser General Public
0006  * License as published by the Free Software Foundation; either
0007  * version 2.1 of the License, or (at your option) any later version.
0008  *
0009  * This library is distributed in the hope that it will be useful,
0010  * but WITHOUT ANY WARRANTY; without even the implied warranty of
0011  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
0012  * Lesser General Public License for more details.
0013  *
0014  * You should have received a copy of the GNU Lesser General Public
0015  * License along with this library; if not, write to the Free Software
0016  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
0017  */
0018 
0019 #include "qgitglobal.h"
0020 
0021 #include "git2.h"
0022 
0023 #include <QAtomicInt>
0024 
0025 namespace LibQGit2
0026 {
0027 
0028 namespace internal {
0029 const int Uninitialized = 0;
0030 const int Initialized = 1;
0031 
0032 QAtomicInt LibInitialized(Uninitialized);
0033 }
0034 
0035 using namespace internal;
0036 
0037 bool initLibQGit2() {
0038     bool ret = false;
0039     if (LibInitialized.fetchAndAddRelaxed(Initialized) == Uninitialized) {
0040         git_libgit2_init();
0041         ret = true;
0042     }
0043     return ret;
0044 }
0045 
0046 bool shutdownLibQGit2() {
0047     bool ret = false;
0048 
0049     if (LibInitialized.loadRelaxed() > Uninitialized) {
0050         if (LibInitialized.fetchAndAddRelaxed(-Initialized) == Initialized) {
0051             git_libgit2_shutdown();
0052             ret = true;
0053         }
0054     }
0055     return ret;
0056 }
0057 
0058 }