0
0
mirror of https://github.com/obsproject/obs-studio.git synced 2024-09-20 13:08:50 +02:00
Commit Graph

378 Commits

Author SHA1 Message Date
jp9000
276e8530d9 UI: Refactor dup. code from stream/recording start/stop
The code to enable/disable the profile menu along with
incrementing/decrementing the sleep inhibitor was duplicated more times
than necessary.
2016-08-21 12:05:25 -07:00
Christoph Hohmann
3ad35625cf UI: Improve saving and restoring geometry of main window 2016-08-11 12:25:16 +02:00
jp9000
f5e54a4b27 UI: Log when user adds/removes/renames sources/filters 2016-08-05 18:59:36 -07:00
jp9000
73d61d4ae3 UI: Use obs_log_loaded_modules for module logging
Makes initialization in logs a bit more clean.
2016-08-05 18:59:35 -07:00
jp9000
ee1d8d370d UI: Add log separators for both startup and shutdown 2016-08-05 18:59:35 -07:00
jp9000
dfc7fbfdc9 UI: Log scenes more cleanly when loading from file 2016-08-05 18:59:34 -07:00
jp9000
2a343955a2 UI: Add "Bind to IP" setting to advanced settings 2016-07-29 15:49:40 -07:00
jp9000
2c5aa87468 UI: Add ability to lock preview
Adds the ability to lock the preview so sources can't be edited.  This
feature is typically used in the case where the user wants to prevent
accidentally clicking and dragging on sources.
2016-07-26 01:32:43 -07:00
jp9000
50d98dceac UI: Don't do scene check when removing scene items
The scene check prevents the ability to remove scene items that have
been detached from their scene, which can happen when scenes are used as
scene items and the scene is deleted elsewhere.
2016-07-09 07:41:14 -07:00
jp9000
60c77d41a3 UI: Make third-party plugins use program data dirs
Makes it so third-party plugins are stored in system-local specific data
directories (except on linux, which will still use user-local data
directories for the time being)
2016-07-06 03:47:51 -07:00
jp9000
e9087cfdc9 UI: Fix window start pos when not inside a monitor
Commit 8932bd39 attempted to fix the starting position when the program
started up inside of a monitor that no longer exists, but it was
incorrectly assumed that it would cause the program to automatically
center its position.  Instead it set its position to {0,0}, which is a
really awkward position.

This fixes that commit and ensures the window starts up centered to the
primary display when its saved starting position is invalid.
2016-07-04 22:34:56 -07:00
jp9000
23430a9221 UI: Allow removing multiple selected scene items 2016-07-02 15:44:24 -07:00
jp9000
3d63096076 UI: Allow adding scenes as scene items
Allows adding scenes as scene items.  Note that you will not be able to
add scenes if it detects infinite recursion (i.e. adding scene A to
scene B, then adding scene B to scene A), in that case it will just fail
to create the scene item.
2016-07-01 15:23:06 -07:00
jp9000
0b2fd1167e UI: Add process priority option for windows 2016-07-01 10:28:16 -07:00
jp9000
3bc9e042a5 UI: Add "View" menu to control visibility of UI widgets
Adds a little improvement to quality-of-life, a typical "View" menu with
the ability to show/hide the following (for now):

- Listbox toolbars
- Status bar
- Transitions pane (some people don't really need/use/care about it)
2016-06-30 14:54:53 -07:00
jp9000
44beb75b04 UI: Add scaling filter options for scene items to UI
Adds scale filtering options to the scene item right-click context menu.
2016-06-29 08:00:55 -07:00
cg2121
2dfb211956 UI: Add option to automatically record while streaming
Allows the ability for users to make it so recording automatically
starts when they start streaming.  Also adds the option to allow the
recording to continue when stream is stopped.

Closes jp9000/obs-studio#554
2016-06-27 17:51:15 -07:00
jp9000
4a3804518d UI: Show "stopping" text on buttons when waiting for stop
The new cutoff timing fix means that streaming/recording has to remain
active for bit until the stream/recording has reached the expecting stop
timestamp.  This means that the buttons would continue to say "Stop
streaming/recording" while waiting for the output to stop itself at the
appropriate timing.

So instead of letting it do that and confusing the user, the buttons
will now say "stopping" when the button is pressed to indicate to the
user that the stream/recording is in the process of stopping.
2016-06-22 14:10:42 -07:00
jp9000
8932bd39d1 UI: Check to ensure window starts up inside a monitor
Fixes an issue where the main window would load off-screen if its last
saved position was inside a monitor that no longer exists.
2016-05-05 15:31:35 -07:00
jp9000
ea851b1351 UI: Don't minimize projectors w/ main window
Projectors should be considered their own windows, not child windows.
Fixes the issue where projectors would minimize whenever the program
was.
2016-04-27 16:00:28 -07:00
jp9000
60ec56b2c6 UI: Add support for QSV encoder to simple output 2016-04-19 08:29:24 -07:00
jp9000
3bd4fe5409 UI: Add command line opts to start streaming/recording
These command line options allow the user to start streaming/recording
on program startup.
2016-04-13 19:01:08 -07:00
jp9000
b52c4f9634 UI: Add command line opt to start w/ specific scene 2016-04-13 19:01:07 -07:00
jp9000
d54bf1b8ab UI: Add "Enforce streaming bitrate limits" setting
Allows the user to disable streaming bitrate limits in simple output
mode if they so choose.  This option is enabled by default.
2016-04-10 03:11:41 -07:00
bl
1194d093ef UI: Fix duplicate filename specifiers
Fix redundant specifiers and change specifiers to match Linux date
command.

Closes jp9000/obs-studio#531
2016-04-02 17:09:24 -07:00
jp9000
3231b29cec UI: Reset crop with transform 2016-03-31 10:16:15 -07:00
jp9000
02661843de UI: Draw cropped scene item edges as green in preview 2016-03-30 19:00:06 -07:00
bl
50961861c7 UI: Add file formatting options for recording
Allows the user to specify custom formatting for their recording file
names with many formatting options, viewed via tooltip.  The options
have been added to the advanced settings section.

Closes jp9000/obs-studio#507
2016-03-25 03:28:54 -07:00
jp9000
c82771e594 UI: Add deinterlacing to UI
Accessible via the context menu of a source.
2016-03-21 21:22:32 -07:00
jp9000
aa2bea3749 (API Change) libobs: Don't use signal for obs_load_sources
(Note: This commit also changes the UI)

Changed:
-------------------
void obs_load_sources(obs_data_array_t *sources_list);

To:
-------------------
void obs_load_sources(obs_data_array_t *sources_list,
		obs_source_load_cb callback, void *private_data);

Signals should really never be required to use to make some function
work properly.  The "source_load" signal was required for the
obs_load_sources function, but it's meant more for loading private data
in the settings, not for general loading of sources.

This changes it so that a callback is explicitly required to load the
sources.
2016-03-04 12:59:56 -08:00
jp9000
3b1775d97f UI: Add configurable transitions 2016-03-01 15:18:34 -08:00
jp9000
292e893a2d UI: Prevent video init with bad video settings
A lot of people had the problem where they'd initialize video settings
with 0 width or height on their output resolution value.  This just
changes it so that the user always has a valid resolution so video
initialization doesn't just outright fail.
2016-02-04 14:42:46 -08:00
jp9000
3ca327fd76 UI: Resize program view if resolution settings changed 2016-01-31 00:55:04 -08:00
jp9000
544953c870 UI: Implement transitions and preview/program mode
Implements transitions, and introduces "Studio Mode" which allows live
editing of the same or different scenes while preserving what's
currently being displayed.

Studio Mode offers a number of new features:
  - The ability to edit different scenes or the same scene without
    modifying what's currently being displayed (of course)

  - The ability to set up "quick transitions" with a desired transition
    and duration that can be assigned hotkeys

  - The option to create full copies of all sources in the program scene
    to allow editing of source properties of the same scene live without
    modifying the output, or (by default) just use references.  (Note
    however that certain sources cannot be duplicated, such as capture
    sources, media sources, and device sources)

  - Swap Mode (enabled by default) which swaps the program scene with
    the preview scene when a transition completes

Currently, only non-configurable transitions (transitions without
properties) are listed, and the only transitions available as of this
writing are fade and cut.  In future versions more transitions will be
added, such as swipe, stingers, and many other various sort of
transitions, and the UI will support being able to add/configure/remove
those sort of configurable transitions.
2016-01-26 11:49:56 -08:00
jp9000
a61933dd8e (API Change) libobs: Add 'type' to obs_scene_duplicate
(Note: This commit also modifies the UI)

Allows the ability to duplicate sources fully copied, and/or have the
scene and its duplicates be private sources
2016-01-26 11:49:52 -08:00
jp9000
b0104fcee0 (API Change) libobs: Remove source_type param from functions
(Note: test and UI are also modified by this commit)

API Changed (removed "enum obs_source_type type" parameter):
-------------------------
obs_source_get_display_name
obs_source_create
obs_get_source_output_flags
obs_get_source_defaults
obs_get_source_properties

Removes the "type" parameter from these functions.  The "type" parameter
really doesn't serve much of a purpose being a parameter in any of these
cases, the type is just to indicate what it's used for.
2016-01-26 11:49:37 -08:00
jp9000
adcbf9311b UI: Remove "audio buffering time" (skip)
(Note: This commit breaks libobs compilation.  Skip if bisecting)
2016-01-26 11:49:30 -08:00
bla
f32f65bb1f UI: Don't create sources popup menu if no scenes
Closes jp9000/obs-studio#499
2016-01-26 11:48:53 -08:00
jp9000
9b5ac1fbd2 UI: Fix preview right-click menu getting wrong source
When right-clicking items in the preview window and getting context
menus for them, it would often make the wrong scene item be associated
with the context menu because of the fact that it was using
QListWidget::currentItem instead of querying the actual selected list.

You must query the actual selection list via QListWidget::selectedItems
because QListWidget::currentItem does not work properly for
multi-selection list widgets.
2016-01-25 17:29:10 -08:00
jp9000
bbbdd4442c UI: Add options to enable/disable stream confirm dialogs
Some streamers would accidentally hit start/stop streaming, which on
certain services would send out mass emails to all their followers.
This just adds options to general settings to optionally enable dialogs
that confirm whether to actually start/stop streaming when the button is
clicked.
2016-01-25 17:29:10 -08:00
jp9000
213d8ce154 UI: Add "Always On Top" option to file menu 2016-01-25 17:29:10 -08:00
jp9000
6da742ba02 UI: Fix bug where default scene would not be added to list 2016-01-25 17:29:10 -08:00
jp9000
6262abc2c8 UI: Resize main preview on the widget's resize signal
Fixes a bug where the preview's size calculations wouldn't update if the
widget itself was resizes but the window wasn't resized.
2016-01-25 17:29:09 -08:00
jp9000
d7d5e55d2c UI: Add splitter to main window
Allows adjusting the size of the bottom section of the main window
2016-01-25 17:29:09 -08:00
jp9000
3c83be374e UI: Remove obs_source_add and sourceSceneRefs variable
Prunes code used to workaround libobs "user sources" (such as
sourceSceneRefs) and instead simply holds its own references and saves
sources it chooses with obs_save_sources_filtered.
2015-12-22 05:49:01 -08:00
jp9000
e3795a2187 UI: Hold ref when storing signals (skip)
(Note: This commit breaks UI compilation.  Skip if bisecting)

Ensures that a reference is kept until the signals associated with that
reference are disconnected.
2015-12-22 05:49:00 -08:00
jp9000
34bbc444eb UI: Only inhibit when active or if projector open
Having sleep or screensavers inhibited at all times was causing some
annoyances for people.  Sleep/screensavers are now only inhibited when
the program is active or when a projector is open.
2015-11-16 09:08:55 -08:00
jp9000
6ba723a997 UI: Fix multi-item selection
Allows changing item selection via list box or via preview window, and
keeps their selection status in sync with each other.
2015-11-15 09:49:22 -08:00
Palana
6c193435cc UI: Move properties window creation for new sources
Currently creating new sources can cause a deadlock:
OBSBasicSourceSelect locks the scene mutex when adding a new source
(required to add invisible sources), and later OBSBasic tries to
lock the graphics mutex (via CreatePropertiesWindow); meanwhile the
graphics thread is holding the graphics mutex and tries to lock each
scene as it renders them, resulting in a (non-obvious from the code)
lock ordering conflict.

Moving the CreatePropertiesWindow call out of the locked scene mutex
restores the previous lock ordering; in addition, the requirement
for keeping sourceSceneRefs for opening that initial properties
window is removed
2015-10-30 10:15:42 +01:00
jp9000
6ad8df8adb (API Change) libobs: Use single func for base effects
API removed:
--------------------
gs_effect_t *obs_get_default_effect(void);
gs_effect_t *obs_get_default_rect_effect(void);
gs_effect_t *obs_get_opaque_effect(void);
gs_effect_t *obs_get_solid_effect(void);
gs_effect_t *obs_get_bicubic_effect(void);
gs_effect_t *obs_get_lanczos_effect(void);
gs_effect_t *obs_get_bilinear_lowres_effect(void);

API added:
--------------------
gs_effect_t *obs_get_base_effect(enum obs_base_effect effect);

Summary:
--------------------
Combines multiple near-identical functions into a single function with
an enum parameter.
2015-10-19 00:52:45 -07:00