Commit Graph

3424 Commits

Author SHA1 Message Date
Colin Wallace
4fd8ecd7e4 RemoteVST: process all remaining messages after the process has quit
Courtesy of @justnope (https://github.com/LMMS/lmms/pull/4371)
2018-06-01 20:53:35 -07:00
Hyunin Song
3cf2afd831 Merge branch 'stable-1.2'
# Conflicts:
#	include/MixerWorkerThread.h
#	src/core/MixerWorkerThread.cpp
2018-05-26 16:09:38 +09:00
Colin Wallace
a3cdda04c0 Give our threads names (#4356)
* Give our threads names

It helps with debugging.

* Use Q_OBJECT macro to automatically name threads.

By default, QThread sets its name based on the Qt meta class. To get an
accurate metaclass, the class which inherits QThread must declare
Q_OBJECT in its header. Futhermore, Qt's MOC requires that a Qt type be
the primary base class when declaring Q_OBJECT, hence the order of
base classes has been rearranged for some classes.
2018-05-24 18:01:51 -07:00
Hyunjin Song
daa3f53515 Fix compilation with Qt 5.11 (#4374)
Add extends attribute for custom widget RowTableView per upstream uic change http://code.qt.io/cgit/qt/qtbase.git/commit/?id=058474884c2505a8a00d4c59b4922bfcd3597c2f
2018-05-23 14:59:45 +09:00
Hussam Eddin Alhomsi
0caaebaecb Remove FluidSynth requirement for background pic (#4364) 2018-05-17 19:35:52 +02:00
Oskar Wallgren
bb43bfb961 Remove release time from arpeggiated note (#4355)
An arpeggio master note shouldn't trigger new notes while it's decaying.

#fixes #4342
2018-05-17 18:39:31 +02:00
SecondFlight
4585a07673 Allow renaming of FX mixer channels with the F2 and enter keys. (#4348)
* Add f2 as a FX mixer rename shortcut. Enter doesn't work yet.

* Add both enter keys, remove code duplication

* Fix renaming with enter/return

* Clean up
2018-05-13 17:15:32 -04:00
Hussam Eddin Alhomsi
0d73f32c03 Reorder the main windows' buttons & shortcuts (#3938)
Puts Project notes after Controller rack.
2018-05-11 12:23:31 +03:00
Oskar Wallgren
d6d55cef7b Remove old commented out code (#4349) 2018-05-10 12:05:44 +02:00
Premik
e8b69b9700 Zooming with mouse wheel center (#3835)
* Horizontal mouse-wheel zooming. Ensure zoom center is always on the current mouse position.

* Horizontal zoom using mouse wheel center on the mouse position. For the SongEditor too.

* Wheel center on the Automation editor too.
2018-05-10 00:45:45 +02:00
Colin Wallace
5d90aecac9 Merge pull request #4339 from PhysSong/tcomove
Fix occasional crash when moving TCOs
2018-05-08 21:29:41 -07:00
Hyunjin Song
03aa5fb3c7 Fix crash on exit from MIDI connections (#4340) 2018-05-07 17:08:43 -07:00
Matt Kline
68c9d227d0 Default some empty destructors
Moving empty destructors out of the .cpp files and into headers
allows them to be devirtualized in certain cases.
(When the compiler can't "see" a function in a header, it must largely
assume it's some black box that the linker will resolve.)

While we're at it, use C++11's `= default` to define empty virtual
desturctors for us.

For some classes (e.g., Piano), nothing is derived from it, so we can
mark the class as final and remove any explicit virtual dtor.

There are many other places where this can be done, but this is a large
enough patch as-is.
2018-05-06 16:34:08 -07:00
Hyunin Song
511c7a64fe Fix occasional crash when moving TCOs 2018-05-03 11:23:35 +09:00
Lukas W
af61a82df8 Merge pull request #4335 from LMMS/fix/job-queue
Fix job queue crash
2018-05-02 12:55:09 +02:00
Lukas W
9a52c7b901 JobQueue: Rename m_queueSize to m_writeIndex
Hopefully makes it less confusing that m_writeIndex grows beyond
JOB_QUEUE_SIZE when the queue is full.
2018-05-02 12:54:45 +02:00
Hussam Eddin Alhomsi
c1b2728d65 Allow setting/moving points at the left edge of AE grid (#4323) 2018-05-01 23:04:39 -07:00
Hyunin Song
4b36ba9f81 Fix a regression from #3711 2018-05-02 12:41:10 +09:00
Hyunin Song
8a41def616 Merge branch 'stable-1.2'
# Conflicts:
#       .circleci/config.yml
#       .travis/osx..install.sh
#       CMakeLists.txt
#       plugins/zynaddsubfx/zynaddsubfx
#       plugins/zynaddsubfx/zynaddsubfx/src/DSP/FFTwrapper.h
#       plugins/zynaddsubfx/zynaddsubfx/src/Misc/QtXmlWrapper.cpp
#       plugins/zynaddsubfx/zynaddsubfx/src/Params/PADnoteParameters.cpp
#       plugins/zynaddsubfx/zynaddsubfx/src/Synth/OscilGen.cpp
#       src/CMakeLists.txt
#       src/core/Track.cpp
#       src/tracks/Pattern.cpp
2018-05-01 09:59:07 +09:00
Hyunjin Song
08573fc96d Fix detuning crash after deleting the note being edited (#4324) 2018-04-30 14:54:34 +09:00
Lukas W
ccd4ff3c2c Fix job queue crash
* Don't add jobs when job queue is full
* Icrease job queue size from 1024 to 8192
2018-04-29 17:01:51 +02:00
Lukas W
d2e068ca40 Merge pull request #4330 from lukas-w/circleci-update
Update CircleCI to Ubuntu 18.04
2018-04-28 22:26:19 +02:00
Matt Kline
ebed0296b3 Axe atomic int (#4326)
* ThreadableJob: Move from AtomicInt to std::atomic

This is the first in a series of commits that migrates away from
AtomicInt towards the C++11 standard library types.
This would allow the removal of AtomicInt and related Qt
version-specific code.

While we're at it, also make ProcessingState an `enum class` so that
it's not implicitly convertible to integers.

* LocklessAllocator: Switch from AtomicInt to std::atomic_int

If it looks like some assignments around the Compare & Swap loops went
missing, it's because compare_exchange_weak() updates the first argument
to the current value when it fails (i.e., returns false).

* BufferManager: Remove extra AtomicInt include

* MixerWorkerThread: AtomicInt to std::atomic_int

* NotePlayHandle: AtomicInt to std::atomic_int

* Remove AtomicInt.h

* Move from QAtomicPointer to std::atomic<T*>

This removes some #ifdef trickery that was being used to get
load-acquire and store-release from Qt5 and "plain" (presumably
sequentially-consistent) loads and stores from Qt4.
2018-04-28 12:54:46 -07:00
Lukas W
4ff993e2a4 Update CircleCI to Ubuntu 18.04 2018-04-28 11:15:09 +02:00
Hussam Eddin Alhomsi
386c471ed7 Limit the automation-editor scaled-level tooltip to the grid (#4308) 2018-04-26 18:37:43 +03:00
Lukas W
d42a685007 Refactoring: Remove duplicate code (#4310) 2018-04-25 18:49:39 +02:00
Lukas W
fce9326192 Update rpmalloc to 1.3.0
Fixes #4055
2018-04-25 11:00:13 +02:00
Hussam Eddin Alhomsi
f7a0553e6a Responsive "Effects chain" & "User controller" LEDs (#4297) 2018-04-24 11:25:49 +03:00
Lukas W
33368bd9d0 Revert CONTRIBUTOR file removal
This reverts commit 30f1e52be3.

# Conflicts:
#	CMakeLists.txt
2018-04-21 13:31:14 +02:00
Colin Wallace
3401de4a83 Use themed file dialogs everywhere. (#4298)
Previously lmms used themed dialogs for project saving/opening, but not
when editing settings (edit -> settings).

With this change, the settings editor also uses themed dialogs.
2018-04-20 19:01:11 -07:00
Tres Finocchiaro
18a4346fd5 Better default working directory (#4288)
* Better default working directory
Closes #1135
2018-04-20 15:41:08 -04:00
Colin Wallace
da126bfb5c Use range-based for loops + fix const correctness 2018-04-17 09:17:33 +02:00
Tres Finocchiaro
ae0dd21df3 Upgrade Calf LADSPA plugins to 0.90 (#3987)
Upgrade Calf LADSPA plugins to 0.90
2018-04-15 21:38:37 -04:00
Oskar Wallgren
07a23c4e3b Allways remove infs/nans (#3706)
When exporting a project lmms performs extra tests for bad data.
The tests are for infs and nans. Switching these tests on for all
occasions as the extra performance hit would be in the order of
only ~2% and the problems, when it hits the end user, are hard to
debug and/or work around.

After testing for inf/nan we clamp the sound to +/-4.0f as sometimes
you will get large transients passing through (an issue that is currently
only present when exporting).

Fixes: #1048
2018-04-15 15:44:38 +02:00
Hussam Eddin Alhomsi
e554a4c4b0 Better behavior when left-clicking a TCO (#4290)
Instead of calling MouseMoveEvent(), the TCO's "text float" text and position are updated.
This prevents left-clicking the right edge of a resizable TCO from decreasing its size.

Also, removed an unused variable: m_oldTime
2018-04-11 13:39:43 +03:00
Hyunjin Song
00f9590b18 Fix preset preview issues with peak controllers (#3904) 2018-04-04 09:06:58 +09:00
Tres Finocchiaro
9af7821eb1 Add PerfLog (#3974)
Add `PerfTime` class representing a point in CPU time and `PerfLogTimer`, used for measuring and logging a time period. Used in `ProjectRenderer::run()
2018-04-03 13:37:25 +02:00
Umcaruje
b77027d6fb Fix MDI subwindow buttons contrast in the MenuBar (#4242)
* Fix MDI subwindow buttons contrast in the MenuBar

* Hard code the button color in LmmsStyle.cpp (thanks @PhysSong)

* Fix code formatting
2018-04-02 19:36:07 +02:00
Umcaruje
ee910d38fe Fix marked semitones in the piano roll (#4239)
* Fix marked semitones in the piano roll

* Don't draw in invalid patterns

* update classic theme

* Fix contrast

* update classic theme
2018-04-02 19:33:01 +02:00
Colin Wallace
ca3a7f3015 Remove unused method and extraneous state from AutomatableModelView (#4258)
* Remove DataType.

An AutomatableModel should not need to know what concrete type it is.
Use virtual methods and implement them in the derived class instead of
testing the type in the base class.

* Remove unused method

* Remove m_hasLinkedModels

We can compute it on-the-fly with very little cost, and doing so
simplifies the code.

* Remove extra 'public:'

Probably a remnant of merging master
2018-03-28 00:03:10 -07:00
Tres Finocchiaro
3673e84ac1 Allow relative paths on non-existent directories (#4271)
* Use cleanPath for calculating relative directories
Closes #4267
2018-03-26 21:51:55 -04:00
Hyunjin Song
ac543ffc75 Play correct note when dragging left side of virtual keyboard (#4265) 2018-03-21 23:39:17 -04:00
Noah Brecht
87e6b48df7 Fix ui glitch where track ticks did not line up (#4171) 2018-03-21 04:13:42 +01:00
Colin Wallace
56b4740146 Copy/paste model values to system clipboard
Previously they were copy/pasted internally, and not visible across LMMS
instances.
2018-03-20 00:43:15 -07:00
Orbital Ink
fc5fc1cbaa Change Detune To Pitch Bend in Piano Roll (#4194) 2018-03-19 20:23:00 +03:00
Colin Wallace
bf1b61023c Use ampToDbfs instead of 20*log10 x.
The function's there (in lmms_math.h) for a reason :)
2018-03-16 20:35:08 -07:00
Colin Wallace
b706ee208d Replace more instances new/delete with owning types (#4245)
* Use owning types when possible.

Note: the QByteArray s is detached to mimic previous behavior;
detach() guarantees that the QByteArray uniquely owns its data, since
otherwise it's COW. This may be relevant in case Plugin:instantiate
modifies s.data() -- this way the original QString is safe.

* Make m_filter a unique_ptr.

* Make m_activeRenderer a unique_ptr

* use std::string instead of strcpy + buffers
2018-03-15 18:46:55 -07:00
Hyunjin Song
b4e78065e7 Fix some bugs with LFO waveform drag&drop (#4227)
* Change to user-wave mode and update display after dropping a sample
* Fix broken drag&drop from sample tracks
2018-03-14 14:48:18 +09:00
Colin Wallace
7adad4790e Merge pull request #4063 from Sawuare/Widgets
Use "Set value" as title for QInputDialog of some widgets.
2018-03-13 21:52:57 -07:00
Colin Wallace
748cc0e3e3 Merge pull request #4235 from Wallacoloo/refactor/use-unique-ptr
refactor: Use unique_ptr for memory management
2018-03-12 22:45:59 -07:00