Commit Graph

1395 Commits

Author SHA1 Message Date
Tobias Doerffel
0404cc760f MainWindow: integrated new WelcomeScreen widget
Initial integration of (not yet fully functional) WelcomeScreen.
2009-08-21 19:14:03 +02:00
Tobias Doerffel
34a20ba610 Added new WelcomeScreen widget
The new WelcomeScreen widget is intended to be shown after startup
by default. It allows the user to choose how to start the session,
i.e. shows a list of recently edited projects, a list of new stuff
at the Sharing Platform as well as some help related information and
links.
2009-08-21 19:11:40 +02:00
Tobias Doerffel
a5bf034575 RecentResourceListModel: new model providing resources sorted by date
RecentResourceListModel is a new proxy model which provides a list of
resources sorted by date (based on a ResourceListModel as source model).
2009-08-21 18:34:34 +02:00
Tobias Doerffel
0550132d1b Engine: provide individual ResourceDBs instead of one global provider
Pointers to individual ResourceDBs can be obtained from Engine now.
This allows for more specialized views and reduces complexity when
dealing with resources.
2009-08-21 18:17:32 +02:00
Tobias Doerffel
d3bb3ff13a ResourceModel: implement filter functionality
So far all subclasses implemented filtering on their own which doesn't
make much sense. Now one can set filter keywords and a filter type for
all ResourceModels. Subclasses simply have to call
ResourceModel::itemMatchesFilter( ResourceItem ) in order to determine
whether an item should be hidden or not. Additionally they have to
implement the updateFilters() method in order to update their internal
management data each time the filters change.
2009-08-21 18:10:38 +02:00
Tobias Doerffel
36ec30f649 WebResourcesProvider: parse date from WebResources index
The last-mod property was not set for non-local ResourceItem's. Parse
it from WebResources index file and pass it to ResourceItem constructor.
2009-08-21 16:36:53 +02:00
Tobias Doerffel
7bea6d0e07 MainWindow: renamed class to match new style
Renamed mainWindow to MainWindow and engine::getMainWindow() to
engine::mainWindow(). Additionally reduced some header dependencies.
2009-08-21 12:09:39 +02:00
Tobias Doerffel
80f101cec6 AudioAlsa/AudioOss: set FD_CLOEXEC flag for file descriptors
Per default child processes inherit all file descriptors of their
parent process. This applied for file descriptors pointing to sound
devices as well. Reopening sound devices while e.g. a ZynAddSubFX
process was running always failed due to this "feature".

By manually setting the FD_CLOEXEC flag for the sound device file
descriptors they do not get inherited by child processes anymore.
2009-08-18 15:27:43 +02:00
Tobias Doerffel
0a6c187b86 MainWindow: initial integration of new QuickLoadDialog
This is an initial integration of the new QuickLoadDialog into LMMS.
One can either open up the dialog via Ctrl+L or the "Edit" menu.

The dialog is for testing only and not useful at all yet.
2009-08-18 00:29:17 +02:00
Tobias Doerffel
562688e845 QuickLoadDialog: initial version
This commit introduces initial version of the QuickLoadDialog.
It's a simple dialog with a filter line-edit as well as a ListView
showing all (filtered) ResourceItem's. Once integrated properly it'll
allow to quickly load a specific resource into current context, e.g. a
sample into AudioFileProcessor or a MIDI file into SongEditor.
2009-08-18 00:23:55 +02:00
Tobias Doerffel
cc987b2e6a ResourceListModel: new model providing resources in a flat list
The new ResourceListModel implements a ResourceModel to be used with
QListView & friends. It provides all items of the given ResourceDB as
a flat unsorted list. It'll be mainly used for the upcoming
QuickLoadDialog.

ResourceListModel features an internal lookup table, resulting in very
good performance when filtering (even with thousands of items).
2009-08-18 00:15:14 +02:00
Tobias Doerffel
13df5c92cf ResourceTreeView: minor coding style improvements
Just some minor fixes to improve general coding style.
2009-08-17 23:05:45 +02:00
Tobias Doerffel
38155d95c4 ResourceTreeModel: moved keyword matching code into ResourceItem class
Place functionality to where it belongs. ResourceItem::matchKeywords()
now returns whether a given list of strings matches with various
string properties of the item.
2009-08-17 22:15:51 +02:00
Tobias Doerffel
0a9d3aba6f ResourceTreeModel: removed unused headers
There's no need to include various headers as according code moved
into ResourceModel class.
2009-08-17 21:11:13 +02:00
Tobias Doerffel
f873ad2693 ItemRelation: new template for making up relations between ResourceItems
The new generic ItemRelation template class replaces ResourceTreeItem's,
resulting in cleaner and better organized code.

In the future other kind of items can be linked hierarchically using
the ItemRelation template.
2009-08-17 20:44:36 +02:00
Tobias Doerffel
26be3b0e81 ResourceModel: made m_db pointer non-modifieable by subclasses
Subclasses have to call ResourceModel::db() now in order to get the
pointer to the DB, the model is operating on.
2009-08-17 17:14:03 +02:00
Tobias Doerffel
3110e2188d Resource[Tree]Model: moved common functionality into base class
All functionality which is not related to a ResourceTreeModel has been
moved into ResourceModel base class, allowing to share them in other
resource model implementations.
2009-08-17 16:53:14 +02:00
Tobias Doerffel
dd42518bb9 Resource[Tree]Item: made hidden-flag multi-model capable
The hidden flag has been moved from ResourceTreeItem to ResourceItem
and has been made multi-model capable, i.e. a ResourceModel pointer is
being used for looking up the flag in a hash table.
2009-08-17 16:50:35 +02:00
Tobias Doerffel
dfae570700 MidiAlsaSeq: print error message if snd_seq_event_input() failed
Evaluate return value of snd_seq_event_input() and print an error
message if it failed.
2009-08-14 15:21:18 +02:00
Tobias Doerffel
27f5d20e05 ControllerConnectionDialog: improved auto detect feature for controllers
When opening up the ControllerConnectionDialog by default auto detect
is enabled and all MIDI input devices are selected. Upon the first
event all devices but the one the event came from get unchecked. This
eases the process of assigning MIDI controls to software controls.
2009-08-14 15:12:58 +02:00
Tobias Doerffel
5ec96a9483 MidiEvent: allow querying name of port which it came from
Added functionality to query the name of the source port of a MidiEvent
by calling MidiClient::sourcePortName( const MidiEvent & ).
2009-08-14 15:12:57 +02:00
Tobias Doerffel
bfe90a8ade MidiAlsaSeq: construction of port name in separate function
A port name is constructed from snd_seq_* structures at various places,
therefore separate it into a static helper function. This avoids
redundancy and eases maintainability.
2009-08-14 15:12:57 +02:00
Tobias Doerffel
9d811bf080 MidiAlsaSeq: improved MIDI event polling loop
Use poll() with a finite timeout so we can quit the thread properly
without manually writing stuff into the pipe.

Check for pending events at the beginning of the loop so we can't end up
in an endless loop.

Furthermore check return value of snd_seq_event_input() and get out of
loop if it indicates an error.
2009-08-14 15:12:56 +02:00
Tobias Doerffel
295b332650 MidiAlsaSeq: QString related fixups
Use QString::isEmpty() rather than comparing against an empty string.
Furthermore use QStrin::toUtf8() instead of QString::toAscii() for
retrieving name of a MidiPort.
2009-08-14 15:12:56 +02:00
Tobias Doerffel
55337ad2be Renamed MIDI and audio related classes/files to match new style
Renamed all MIDI and audio related classes/files to match new style.
Additionally various cleanups.
(cherry picked from commit b8ebfbd06a)
2009-08-13 01:46:49 +02:00
Andrew Kelley
fb733051bd added FLAC as an export format 2009-08-12 07:18:16 -07:00
Andrew Kelley
6cf2d83808 made CLI rendering smoother
Suppressed a message box that would pop up in command
line interface causing a crash and made lmms act properly
when a rendering plugin fails. Need to figure out how to
terminate program in project_renderer line 222.
2009-08-12 07:14:44 -07:00
Andrew Kelley
0ab12b4eb9 Merge branch 'master' of ssh://superjoe30@lmms.git.sourceforge.net/gitroot/lmms 2009-08-12 05:52:46 -07:00
Andrew Kelley
a55b134263 mp3 rendering: apply master gain to output
Apply master gain when rendering an mp3. Don't use hardcoded
number of channels.
Additionally replaced short int with Sint16 and printf with qWarning.
2009-08-12 05:44:20 -07:00
Andrew Kelley
1c118f1a46 sample_buffer: made MP3 decoder more robust
The mp3 decoder was using an uncomfortably large buffer,
laughably because of a negative overflow. Fixed this and
added a failsafe check to prevent buffer overflows.

Additionally changed printfs to qWarnings and fixed copyright
notice in audio_file_mp3.
2009-08-12 04:34:24 -07:00
Peter Nelson
1fe0c689b0 AudioJACK: removed incorret JACK transport code
The audio_jack driver currently treats the jack transport status as a
flag for whether or not to output audio. This is incorrect and
unintended usage of jack transport. The attached patch simply removes
all references to jack transport from the driver, so that LMMS will
always be able to produce audio.

Closes #2816029.
2009-08-12 11:47:35 +02:00
Tobias Doerffel
58023cf2cf MidiWinMM: added missing break directive after case-block
A break directive was missing in MidiWinMM::handleInputEvent(), leading
to inappropriate calls to qWarning() on pitch bend.
2009-08-10 13:51:09 +02:00
Paul Giblock
f1d60958f0 Rename all Controller-family classes to new style
Adjust capitialization on all Controller-related classes to new
standards and update all calling code
2009-08-08 13:05:22 -04:00
Paul Giblock
a9a3c796f7 Hotfix for resizable controller rack
Apparently I didn't compile the latest version of my changes and there
was a lurking error.  This has been fixed.
2009-08-08 12:04:15 -04:00
Paul Giblock
bb76ba5121 Make Controller-Rack resizable
Per request, make the Controller-rack vertically sizable.  This is also
part of our effort to slowly deprecate old fixed-positioning code in
favor of layouts.
2009-08-07 16:26:07 -04:00
Tobias Doerffel
d66c71ebf8 MainWindow: removed HQ mode button
Switching to HQ mode in standard workflow doesn't make much sense and
is likely to cause problems. Therefore remove the HQ mode button for
for time being. One can still export projects in high(er) quality.
2009-08-07 17:44:49 +02:00
Tobias Doerffel
94c5c5a46f MidiWinMM: use qWarning() rather than printf()
Using printf() is really old C-style, therefore changed all printf()s
to qWarning()s.
2009-08-06 13:16:22 +02:00
Tobias Doerffel
9cdb6cca3b SampleBuffer: display different message if file was not found
Instead of displaying a message about failed decoding of a file,
properly indicate the actual problem if the file itself does not exist.
2009-08-05 18:19:04 +02:00
Tobias Doerffel
4cdcd1a670 PianoRoll: removed duplicate function call in testPlayNote()
There's no need to send a MidiNotePanning event twice in
PianoRoll::testPlayNote(). Removed the duplicate function call.
2009-08-05 12:28:36 +02:00
Tobias Doerffel
0bb54199b0 Whole code base: various cleanups, removed SINGLE_SOURCE_COMPILE relicts
* cleaned up code and improved coding style
* removed old SINGLE_SOURCE_COMPILE macro relicts
* use QString::toUtf8() instead of QString::toAscii() wherever possible
2009-08-05 11:41:59 +02:00
Tobias Doerffel
afbaabed02 SampleBuffer: do not show messagebox if there's no GUI
Showing a messagebox if LMMS is running in console-mode only is bad and
makes it crash. Therefore check for engine::hasGUI() first.
2009-08-04 12:11:30 +02:00
Tobias Doerffel
bf8f823751 Mixer: fixed wrong macro logic leading to potential performance loss
The macro logic for defining the SPINLOCK_PAUSE macro tested against
LMMS_HOST_X86_64 twice instead of testing against LMMS_HOST_X86_64 and
LMMS_HOST_X86. This caused the SPINLOCK_PAUSE macro not being set on
x86.
2009-08-03 18:53:10 +02:00
Tobias Doerffel
60eba2e4c3 CpuX86: added support for memory prefetching
Added macros PREFETCH_READ() and PREFETCH_WRITE() which insert proper
prefetch instructions. At least on my Intel Atom CPU this improves
performany slightly. Probably needs some further tuning.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-08-03 17:14:58 +02:00
Tobias Doerffel
89fa5c99e9 CPU: new framework for optimized CPU-specific routines
The new CPU framework replaces the old BasicOps framework. It is more
flexible and the build process isn't such a mess anymore (pre-compiled
assembler files etc.). It will hopefully see some improvements and
extensions soon.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-08-03 17:14:16 +02:00
Tobias Doerffel
ab0160f9fc LameLibrary: fixed copyright notice
Removed myself from list of copyright holders as I didn't help out
with LAME support at all.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-07-28 23:18:20 +02:00
Tobias Doerffel
e115124075 WebResourcesProvider: support for HTTP forwardings + cleanups
Properly handle HTTP status code 302 which indicates a moved site,
i.e. try to fetch data from the new location. This finally makes
WebResources work again with LSP being moved to http://lmms.info.

Furthermore cleaned up code a bit. There's no need for a global
QHttp object or a global QBuffer object. Instead allocate them on
the stack in the according methods.

Furthermore removed unused/incomplete support for non-blocking download.
We should introduce support for a ProgressDialog solution (also allowing
to cancel operations) later.

Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
2009-07-17 11:49:51 +02:00
Andrew Kelley
d85d8b73d0 ConfigManager - add #ifdef LMMS_HAVE_FLUIDSYNTH
Fixed compliation bug for those who don't have
fluidsynth installed
2009-07-16 11:21:00 -07:00
Andrew Kelley
2b660e3756 automationPattern - deleted glitchy code
<superjoe> why is that code even there?
<pgib> until the next mixer-period, then the model's value is reset
to the actual automation track
<pgib> I have no idea. I think it should be removed honestly. again,
there is no comment explainign the true intent
* superjoe experiments
<pgib> it was probably a poor attempt to make it so when you adjust
the only automation point for a track, that the value of the model
will change immediately'
<pgib> I think it is safe to move the newTime==0 chunk
<pgib> if we want to make the automationEditor immediately change the
value, there needs to be more logic
<pgib> and it would belong in automationEditor -- not automationPattern

<pgib> but this fixes the superAutomation why-in-the-hell bug
2009-07-16 10:07:56 -07:00
Andrew Kelley
e0e93a9730 Resource Browser - smoother gui
When you press down or up while browsing in the resource browser,
it plays the sample.
FIXED: When you click on the keyboard in the resource browser, and then
click on the treeview, it didn't transfer focus.
2009-07-16 08:14:17 -07:00
Andrew Kelley
73fdfb4ef1 exportPorjectDialog - default output file format
exportProjectDialog - select the output file format based on
what the user has already chosen in the export dialog. Prevents
the user from having to choose twice.
(also fixed whitespace and added modelines where applicable)
2009-07-16 05:19:26 -07:00