Allow build of sudoku app with macOS + XQuartz

This commit is contained in:
ManoloFLTK 2023-08-16 10:27:41 +02:00
parent 34db9e8bf7
commit 4aae2d1224

View File

@ -42,14 +42,17 @@
#ifndef _WIN32
# include <unistd.h>
#endif // !_WIN32
#if defined __APPLE__ && !defined(FLTK_USE_X11)
# define USE_MACOS 1
#endif
#ifdef HAVE_ALSA_ASOUNDLIB_H
# define ALSA_PCM_NEW_HW_PARAMS_API
# include <alsa/asoundlib.h>
#endif // HAVE_ALSA_ASOUNDLIB_H
#ifdef __APPLE__
#ifdef USE_MACOS
# include <CoreAudio/AudioHardware.h>
#endif // __APPLE__
#endif // USE_MACOS
#ifdef _WIN32
# include <mmsystem.h>
#endif // _WIN32
@ -62,11 +65,11 @@
#define GROUP_SIZE 160
#define CELL_SIZE 50
#define CELL_OFFSET 5
#ifdef __APPLE__
#ifdef USE_MACOS
# define MENU_OFFSET 0
#else
# define MENU_OFFSET 25
#endif // __APPLE__
#endif // USE_MACOS
// Sound class for Sudoku...
//
@ -85,11 +88,8 @@
// the CoreAudio implementation you see here!
class SudokuSound {
// Private, OS-specific data...
#ifdef __APPLE__
#ifdef USE_MACOS
AudioDeviceID device;
#ifndef MAC_OS_X_VERSION_10_5
#define MAC_OS_X_VERSION_10_5 1050
#endif
# if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5
AudioDeviceIOProcID audio_proc_id;
# endif
@ -115,7 +115,7 @@ class SudokuSound {
# ifdef HAVE_ALSA_ASOUNDLIB_H
snd_pcm_t *handle;
# endif // HAVE_ALSA_ASOUNDLIB_H
#endif // __APPLE__
#endif // USE_MACOS
// Common data...
static int frequencies[9];
@ -216,7 +216,7 @@ int SudokuSound::sample_size = 0;
SudokuSound::SudokuSound() {
sample_size = 0;
#ifdef __APPLE__
#ifdef USE_MACOS
remaining = 0;
UInt32 size = sizeof(device);
@ -312,7 +312,7 @@ SudokuSound::SudokuSound() {
}
}
# endif // HAVE_ALSA_ASOUNDLIB_H
#endif // __APPLE__
#endif // USE_MACOS
if (sample_size) {
// Make each of the notes using a combination of sine and sawtooth waves
@ -344,7 +344,7 @@ SudokuSound::SudokuSound() {
// Cleanup the SudokuSound class
SudokuSound::~SudokuSound() {
#ifdef __APPLE__
#ifdef USE_MACOS
if (sample_size) {
# if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5
AudioDeviceStop(device, audio_proc_id);
@ -373,7 +373,7 @@ SudokuSound::~SudokuSound() {
snd_pcm_close(handle);
}
# endif // HAVE_ALSA_ASOUNDLIB_H
#endif // __APPLE__
#endif // USE_MACOS
if (sample_size) {
for (int i = 0; i < 9; i ++) {
@ -383,7 +383,7 @@ SudokuSound::~SudokuSound() {
}
#ifdef __APPLE__
#ifdef USE_MACOS
// Callback function for writing audio data...
OSStatus
SudokuSound::audio_cb(AudioDeviceID device,
@ -413,7 +413,7 @@ SudokuSound::audio_cb(AudioDeviceID device,
return noErr;
}
#endif // __APPLE__
#endif // USE_MACOS
#define NOTE_DURATION 50
@ -421,7 +421,7 @@ SudokuSound::audio_cb(AudioDeviceID device,
void SudokuSound::play(char note) {
Fl::check();
#ifdef __APPLE__
#ifdef USE_MACOS
// Point to the next note...
data = sample_data[note - 'A'];
remaining = sample_size * 2;
@ -477,7 +477,7 @@ void SudokuSound::play(char note) {
XChangeKeyboardControl(fl_display,
KBBellPercent | KBBellPitch | KBBellDuration,
&control);
#endif // __APPLE__
#endif // USE_MACOS
}
@ -643,7 +643,9 @@ Sudoku::Sudoku()
{ "&Solve Game", FL_COMMAND | 's', solve_cb, 0, FL_MENU_DIVIDER },
{ "&Update Helpers", 0, update_helpers_cb, 0, 0 },
{ "&Mute Sound", FL_COMMAND | 'm', mute_cb, 0, FL_MENU_TOGGLE | FL_MENU_DIVIDER },
#ifndef USE_MACOS
{ "&Quit", FL_COMMAND | 'q', close_cb, 0, 0 },
#endif
{ 0 },
{ "&Difficulty", 0, 0, 0, FL_SUBMENU },
{ "&Easy", 0, diff_cb, (void *)"0", FL_MENU_RADIO },