Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 0aaf75a

Browse files
Emscripten: Package presets, display preset name in window title, increase preset duration.
Also removed some debug preset name output that increased startup time drastically.
1 parent df35f85 commit 0aaf75a

File tree

3 files changed

+26
-35
lines changed

3 files changed

+26
-35
lines changed

‎src/projectM-emscripten/CMakeLists.txt‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,8 @@ target_link_libraries(projectM_SDL_emscripten
1313
PRIVATE
1414
projectM::libprojectM
1515
)
16+
17+
target_link_options(projectM_SDL_emscripten
18+
PRIVATE
19+
"SHELL:--preload-file ${CMAKE_SOURCE_DIR}/presets@/presets"
20+
)

‎src/projectM-emscripten/README.md‎

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
This application is a sample entry point for the emscripten-built version of projectM.
44

5-
It's a very basic application, only displaying the "idle" preset. No presets are currently packaged into the virtual file system.
5+
It's a very basic application without many features.
66

77
## Limitations
88

@@ -35,5 +35,6 @@ emcmake ..
3535
emmake
3636
```
3737

38-
If the build was successful, you will find the projectM_SDL_emscripten.html, .js and .wasm files in
39-
the `cmake-build-emscripten/src/projectM-emscripten`directory.
38+
If the build was successful, you will find the projectM_SDL_emscripten.html, .data, .js and .wasm files in
39+
the `cmake-build-emscripten/src/projectM-emscripten`directory. The .data file includes all presets as a virtual
40+
filesystem.

‎src/projectM-emscripten/projectM_SDL_emscripten.cpp‎

Lines changed: 17 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@
1414

1515
#include <string>
1616

17-
#include <dirent.h>
18-
1917
const float FPS = 60;
2018

2119
struct projectMApp
@@ -144,6 +142,17 @@ void keyHandler(const SDL_Event& sdl_evt)
144142
projectm_key_handler(app.pm, evt, key, mod);
145143
}
146144

145+
void presetSwitchedEvent(bool isHardCut, unsigned int index, void* context)
146+
{
147+
auto presetName = projectm_get_preset_name(app.pm, index);
148+
SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION, "Displaying preset: %s\n", presetName);
149+
150+
std::string newTitle = "projectM ➫ " + std::string(presetName);
151+
projectm_free_string(presetName);
152+
153+
SDL_SetWindowTitle(app.win, newTitle.c_str());
154+
}
155+
147156
void renderFrame()
148157
{
149158
SDL_Event evt;
@@ -220,28 +229,27 @@ int main(int argc, char* argv[])
220229
}
221230

222231
app.settings.mesh_x = 48;
223-
app.settings.mesh_y = 32;
232+
app.settings.mesh_y = 48;
224233
app.settings.fps = FPS;
225234
app.settings.texture_size = 1024;
226235
app.settings.window_width = width;
227236
app.settings.window_height = height;
228237
app.settings.soft_cut_duration = 3; // seconds
229-
app.settings.preset_duration = 5; //seconds
230-
app.settings.beat_sensitivity = 0.8;
238+
app.settings.preset_duration = 30; //seconds
239+
app.settings.beat_sensitivity = 0.9;
231240
app.settings.aspect_correction = 1;
232241
app.settings.easter_egg = 0; // ???
233242
app.settings.shuffle_enabled = 1;
234243
app.settings.soft_cut_ratings_enabled = 1; // ???
235244
app.settings.preset_url = projectm_alloc_string(8);
236-
strncpy(app.settings.preset_url, "presets", 8);
245+
strncpy(app.settings.preset_url, "/presets", 8);
237246

238247
// init projectM
239248
app.pm = projectm_create_settings(&(app.settings), PROJECTM_FLAG_NONE);
240-
printf("init projectM\n");
241249
projectm_select_random_preset(app.pm, true);
242-
printf("select random\n");
243250
projectm_set_window_size(app.pm, width, height);
244-
printf("resetGL\n");
251+
projectm_set_preset_switched_event_callback(app.pm, &presetSwitchedEvent, nullptr);
252+
printf("projectM initialized.\n");
245253

246254
// get an audio input device
247255
if (!selectAudioInput(&app))
@@ -250,29 +258,6 @@ int main(int argc, char* argv[])
250258
return 1;
251259
}
252260

253-
// Allocate a new a stream given the current directory name
254-
DIR* m_dir;
255-
if ((m_dir = opendir("/")) == nullptr)
256-
{
257-
printf("error opening /\n");
258-
}
259-
else
260-
{
261-
struct dirent* dir_entry;
262-
while ((dir_entry = readdir(m_dir)) != nullptr)
263-
{
264-
printf("%s\n", dir_entry->d_name);
265-
}
266-
}
267-
268-
auto playlistSize = projectm_get_playlist_size(app.pm);
269-
for (unsigned int i = 0; i < playlistSize; i++)
270-
{
271-
auto presetName = projectm_get_preset_name(app.pm, i);
272-
printf("%u\t%s\n", i, presetName);
273-
projectm_free_string(presetName);
274-
}
275-
276261
emscripten_set_main_loop(renderFrame, 0, 0);
277262

278263
return 0;

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /