Skip to content

Commit 2bd643d

Browse files
committed
clip: make g_clipboard live globally on stack
1 parent 07f2c98 commit 2bd643d

4 files changed

Lines changed: 13 additions & 13 deletions

File tree

include/clipboard.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
#ifndef _CLIPBOARD_HPP_
22
#define _CLIPBOARD_HPP_
33

4-
#include <memory>
54
#include <string>
65

76
#include "screen_capture.hpp"
@@ -10,13 +9,14 @@ class Clipboard
109
{
1110
public:
1211
Clipboard(SessionType session) : m_session(session) {}
12+
void SetSession(SessionType session) { m_session = session; }
1313
Result<> CopyText(const std::string& text);
1414
Result<> CopyImage(const capture_result_t& cap);
1515

1616
private:
1717
SessionType m_session;
1818
};
1919

20-
extern std::unique_ptr<Clipboard> g_clipboard;
20+
extern Clipboard g_clipboard;
2121

2222
#endif // !_CLIPBOARD_HPP_

src/main.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -61,11 +61,11 @@ struct GLFWwindow;
6161
// clang-format on
6262

6363
// Extern variables declariaions
64-
std::deque<std::string> g_dropped_paths;
65-
std::unique_ptr<Config> g_config;
66-
std::unique_ptr<Clipboard> g_clipboard;
67-
bool g_is_systray = false;
68-
int g_scr_w{}, g_scr_h{};
64+
std::deque<std::string> g_dropped_paths;
65+
std::unique_ptr<Config> g_config;
66+
bool g_is_systray = false;
67+
int g_scr_w{}, g_scr_h{};
68+
Clipboard g_clipboard(SessionType::Unknown);
6969

7070
std::error_code ec;
7171

@@ -238,7 +238,7 @@ void capture_worker(const std::string& imgui_ini_path)
238238
do_copy_image = false;
239239
capture_result_t img = std::move(pending_image);
240240
lk.unlock();
241-
g_clipboard->CopyImage(img);
241+
g_clipboard.CopyImage(img);
242242
continue;
243243
}
244244

@@ -378,9 +378,10 @@ int main(int argc, char* argv[])
378378
logger.info("=== oshot starting ===");
379379
logger.info("Log file path: {}", file->filename());
380380
logger.flush();
381-
382381
spdlog::flush_every(std::chrono::seconds(1));
383382

383+
g_clipboard.SetSession(get_session_type());
384+
384385
// Check if demo build.
385386
// removing it once the hackaton has ended
386387
std::string configDir = get_config_dir().string();
@@ -390,7 +391,6 @@ int main(int argc, char* argv[])
390391
const std::string& configFile = parse_config_path(argc, argv, configDir).string();
391392
const std::string& imgui_ini_path = configDir + "/imgui.ini";
392393

393-
g_clipboard = std::make_unique<Clipboard>(get_session_type());
394394
g_config = std::make_unique<Config>(configFile, configDir);
395395
if (!parseargs(argc, argv, configFile))
396396
return EXIT_FAILURE;

src/screenshot_tool.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1182,7 +1182,7 @@ void ScreenshotTool::DrawMenuItems()
11821182
ImGui::Text("%s", version_infos.c_str());
11831183

11841184
if (ImGui::Button("Copy text"))
1185-
g_clipboard->CopyText(version_infos);
1185+
g_clipboard.CopyText(version_infos);
11861186
ImGui::EndChild();
11871187
ImGui::TreePop();
11881188
}
@@ -2578,7 +2578,7 @@ void ScreenshotTool::CreateCopyTextButton(const std::string& text_copy)
25782578

25792579
if (ImGui::Button(just_copied ? "Copied!" : "Copy Text"))
25802580
{
2581-
const Result<>& res = g_clipboard->CopyText(text_copy);
2581+
const Result<>& res = g_clipboard.CopyText(text_copy);
25822582
if (!res.ok())
25832583
{
25842584
SetError(FailedToCopyText, res.error_v());

src/util.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -313,7 +313,7 @@ Result<std::string> get_config_image_out_fmt()
313313
Result<> save_png(SavingOp op, const capture_result_t& img)
314314
{
315315
if (op == SavingOp::Clipboard)
316-
return g_clipboard->CopyImage(img);
316+
return g_clipboard.CopyImage(img);
317317

318318
const Result<std::string>& r = get_config_image_out_fmt();
319319
if (!r.ok())

0 commit comments

Comments
 (0)