| 174 | } |
| 175 | |
| 176 | void |
| 177 | FrameworkPrivate::Shutdown(bool restart) |
| 178 | { |
| 179 | auto l = Lock(); |
| 180 | US_UNUSED(l); |
| 181 | bool wasActive = false; |
| 182 | switch (static_cast<Bundle::State>(state.load())) |
| 183 | { |
| 184 | case Bundle::STATE_INSTALLED: |
| 185 | case Bundle::STATE_RESOLVED: |
| 186 | ShutdownDone_unlocked(false); |
| 187 | break; |
| 188 | case Bundle::STATE_ACTIVE: |
| 189 | wasActive = true; |
| 190 | [[fallthrough]]; |
| 191 | case Bundle::STATE_STARTING: |
| 192 | { |
| 193 | bool const wa = wasActive; |
| 194 | #ifdef US_ENABLE_THREADING_SUPPORT |
| 195 | if (!shutdownThread.joinable()) |
| 196 | { |
| 197 | shutdownThread = std::thread(std::bind(&FrameworkPrivate::Shutdown0, this, restart, wa)); |
| 198 | } |
| 199 | #else |
| 200 | Shutdown0(restart, wa); |
| 201 | #endif |
| 202 | break; |
| 203 | } |
| 204 | case Bundle::STATE_UNINSTALLED: |
| 205 | case Bundle::STATE_STOPPING: |
| 206 | // Shutdown already inprogress |
| 207 | break; |
| 208 | } |
| 209 | } |
| 210 | |
| 211 | void |
| 212 | FrameworkPrivate::Start(uint32_t) |
no test coverage detected