GUI: make the new button work

This commit is contained in:
tildearrow 2021-12-24 18:23:01 -05:00
parent 6635d1c3ec
commit 8428f7da32
3 changed files with 21 additions and 2 deletions

View File

@ -1428,6 +1428,22 @@ void DivEngine::renderSamples() {
}
}
void DivEngine::createNew() {
DivSystem sys=song.system;
quitDispatch();
isBusy.lock();
song.unload();
song=DivSong();
song.system=sys;
chans=getChannelCount(song.system);
renderSamples();
isBusy.unlock();
initDispatch();
isBusy.lock();
reset();
isBusy.unlock();
}
void DivEngine::changeSystem(DivSystem which) {
quitDispatch();
isBusy.lock();

View File

@ -130,6 +130,8 @@ class DivEngine {
void nextBuf(float** in, float** out, int inChans, int outChans, unsigned int size);
DivInstrument* getIns(int index);
DivWavetable* getWave(int index);
// start fresh
void createNew();
// load a .dmf.
bool load(unsigned char* f, size_t length);
// save as .dmf.

View File

@ -2237,10 +2237,11 @@ bool FurnaceGUI::loop() {
ImGui::BeginMainMenuBar();
if (ImGui::BeginMenu("file")) {
ImGui::MenuItem("new");
if (ImGui::MenuItem("new")) {
e->createNew();
}
if (ImGui::MenuItem("open...")) {
openFileDialog(GUI_FILE_OPEN);
}
ImGui::Separator();
ImGui::MenuItem("save");