Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix default tooltip settings, when mixxx.cfg is empty, fixes Bug #118933... #11

Merged
merged 2 commits into from
Jun 17, 2013

Conversation

daschuer
Copy link
Member

...7

@@ -273,7 +273,7 @@ void MixxxApp::initializeKeyboard() {
initializeTranslations(pApp);

// Set the visibility of tooltips
m_tooltips = m_pConfig->getValueString(ConfigKey("[Controls]", "Tooltips")).toInt();
m_tooltips = m_pConfig->getValueString(ConfigKey("[Controls]", "Tooltips"), "1").toInt();
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Where does this "1" come from? I guess the tooltips config item is dependent on the index number of the menu item? That seems bad.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

mixxx.h Line 230:
int m_tooltips; //0=OFF, 1=ON, 2=ON (only in Library)

But we should replace this by an enum.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah if you're touching this code anyway, we might as well make it an enum. If the enum is numbered the same way as preexisting behavior then we don't even need to worry about migration.

@daschuer
Copy link
Member Author

yeah if you're touching this code anyway, we might as well make it an enum. If the enum is
numbered the same way as preexisting behavior then we don't even need to worry about migration.

Arrg.. :-/ In C++ enums cannot be converted to int. So we must stay with int to avoid to much work.
But I have added comments, and a little refactoring.

@ywwg
Copy link
Member

ywwg commented Jun 15, 2013

sure they can, you use a switch/case block. It is sad, but them's the breaks.

static int MyEnumToInt(Enum killmenow) {
  switch(killmenow) {
  case Enum::firstone:
    return 0;
  default:
    ErrorCondition();
  }
}

The reason this is not so horrendous is you are forced to do error checking.

@daschuer
Copy link
Member Author

Yes, I know, but IMHO the extra work is not worth here. It is just a bug fix.
We have to deal with the integer anyway, when converting to the combo box index and we will find it in the mixxx.cfg file.

@rryan
Copy link
Member

rryan commented Jun 16, 2013

You can also static_cast() enums which is less verbose but doesn't have error handling.

enum FooEnum {
    FOO = 0,
    BAR,
    BAZ
}
FooEnum bar = BAR;
int iBar = static_cast<int>(bar);

iBar will have the value 1.

@rryan
Copy link
Member

rryan commented Jun 16, 2013

But I agree... no need to do a bunch of work just to fix a bug. LGTM to me.

daschuer added a commit that referenced this pull request Jun 17, 2013
Fix default tooltip settings, when mixxx.cfg is empty, fixes Bug #118933...
@daschuer daschuer merged commit a574828 into mixxxdj:master Jun 17, 2013
@daschuer daschuer deleted the bug_1189337 branch June 17, 2013 06:16
kain88-de pushed a commit to kain88-de/mixxx that referenced this pull request Sep 10, 2014
remove icons from wcoverartmenu actions
@daschuer daschuer mentioned this pull request Dec 28, 2014
@daschuer daschuer mentioned this pull request Aug 13, 2017
19 tasks
ronso0 referenced this pull request in ronso0/mixxx Oct 25, 2017
fix highlighted xfader orientation buttons
@daschuer daschuer mentioned this pull request Jun 11, 2018
11 tasks
@daschuer daschuer mentioned this pull request Aug 19, 2018
uklotzde pushed a commit that referenced this pull request Sep 29, 2019
ywwg pushed a commit that referenced this pull request Mar 7, 2022
…h sync

When loading a track that is not yet present in the library (and thus
doesn't have any BPM because it hasn't been analyzed yet) while another
deck is playing and both decks have sync enabled, a debug assertion is
triggered:

    DEBUG ASSERT: "isValid()" in function double mixxx::Bpm::value() const at src/track/bpm.h:53
    Aborted (core dumped)

The backtrace looks as follows:

    #0  0x00007f175c87234c in __pthread_kill_implementation () at /usr/lib/libc.so.6
    #1  0x00007f175c8254b8 in raise () at /usr/lib/libc.so.6
    #2  0x00007f175c80f534 in abort () at /usr/lib/libc.so.6
    #3  0x00007f175cf05ee4 in qt_assert(char const*, char const*, int) () at /usr/lib/libQt5Core.so.5
    #4  0x000055deb2e67e1c in mixxx::(anonymous namespace)::handleMessage(QtMsgType, QMessageLogContext const&, QString const&) (type=<optimized out>, context=<optimized out>, input=<optimized out>) at src/util/logging.cpp:355
    #5  0x00007f175cf47128 in  () at /usr/lib/libQt5Core.so.5
    #6  0x00007f175cf3fd8a in  () at /usr/lib/libQt5Core.so.5
    #7  0x00007f175cf06526 in QMessageLogger::critical(char const*, ...) const () at /usr/lib/libQt5Core.so.5
    #8  0x000055deb2e5c720 in mixxx_debug_assert(char const*, char const*, int, char const*) (assertion=assertion@entry=0x55deb39bd0db "isValid()", file=file@entry=0x55deb39bbf30 "src/track/bpm.h", line=line@entry=53, function=function@entry=0x55deb39bbf08 "double mixxx::Bpm::value() const") at gsrc/util/assert.h:9
    #9  0x000055deb2ee7e7e in mixxx_debug_assert_return_true(char const*, char const*, int, char const*) (function=0x55deb39bbf08 "double mixxx::Bpm::value() const", line=53, file=0x55deb39bbf30 "src/track/bpm.h", assertion=0x55deb39bd0db "isValid()") at gsrc/util/assert.h:18
    #10 mixxx::Bpm::value() const (this=<synthetic pointer>) at src/track/bpm.h:53
    #11 mixxx::operator*(mixxx::Bpm, double) (multiple=1, bpm=...) at src/track/bpm.h:160
    #12 SyncControl::setLocalBpm(mixxx::Bpm) (this=<optimized out>, localBpm=...) at src/engine/sync/synccontrol.cpp:567
    #13 0x000055deb34c7ba3 in EngineBuffer::postProcess(int) (this=0x55deb56eb060, iBufferSize=2048) at src/engine/enginebuffer.cpp:1318
    #14 0x000055deb3139023 in EngineMaster::processChannels(int) (this=0x55deb5449440, iBufferSize=<optimized out>) at src/engine/enginemaster.cpp:383
    #15 0x000055deb31394f7 in EngineMaster::process(int) (this=0x55deb5449440, iBufferSize=iBufferSize@entry=2048) at src/engine/enginemaster.cpp:410
    #16 0x000055deb2f91d0b in SoundManager::onDeviceOutputCallback(long) (this=<optimized out>, iFramesPerBuffer=iFramesPerBuffer@entry=1024) at src/soundio/soundmanager.cpp:596
    #17 0x000055deb32dd794 in SoundDevicePortAudio::callbackProcessClkRef(long, float*, float const*, PaStreamCallbackTimeInfo const*, unsigned long) (this=0x55deb553e6b0, framesPerBuffer=1024, out=<optimized out>, in=<optimized out>, timeInfo=<optimized out>, statusFlags=<optimized out>) at src/soundio/sounddeviceportaudio.cpp:965

This happens because `newLocalBpm` is invalid when `localBpm` is
invalid. Trying to do sync decks while no tempo information is available
does not make sense, so we only synchronize decks if the local BPM is
available.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants