[haiku-commits] haiku: hrev49474 - src/preferences/media src/kits/media headers/os/media

  • From: b.vitruvio@xxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Wed, 29 Jul 2015 18:11:10 +0200 (CEST)

hrev49474 adds 2 changesets to branch 'master'
old head: e716f4877826e8db64c57864a40e7b72ec559bd0
new head: 7482390ab4dc1e77ccb42b4f2c290b5bfe814f7f
overview:
http://cgit.haiku-os.org/haiku/log/?qt=range&q=7482390ab4dc+%5Ee716f4877826

----------------------------------------------------------------------------

8acd164f8c6b: Add new version of launch_media_server

* Due to the needs to provide a peaceful UX, i moved out the
notifications mechanism from the Media preflet and i have
integrated it with the launch and shutdown functions of MediaDefs.h.
* This implied to introduce a new launch_media_server function
similar to the shutdown_media_server allowing to specify a custom
notification function too.
* Both functions then are reworked to send by default notifications
to the Deskbar, this was needed because in a lot of situations
the mechanism failed without correctly noticing the user.
* The one argument launch_media_server is considered to be deprecated,
the default argument is removed to mantain binary compatibility but
make new apps to automatically use the new one with just the default
arguments. This is needed due to conflicts in overloading.
* Improve notifications by indirectly extending localization
to old BeOS apps.

7482390ab4dc: Media: Improve both notifications and quit mechanism

* Media is now waiting for media_server to start if the window
is closed before to finish, this was proposed by stippi.
* Moved out anything related to notifications as they are now
managed by the media_kit.
* Solved some TODOs and minor issues too.

[ Dario Casalinuovo <b.vitruvio@xxxxxxxxx> ]

----------------------------------------------------------------------------

8 files changed, 200 insertions(+), 120 deletions(-)
headers/os/media/MediaDefs.h | 14 ++-
src/kits/media/Jamfile | 2 +-
src/kits/media/MediaDefs.cpp | 146 +++++++++++++++++++++++++++---
src/preferences/media/Media.cpp | 2 +-
src/preferences/media/Media.h | 3 -
src/preferences/media/MediaViews.cpp | 3 +-
src/preferences/media/MediaWindow.cpp | 144 ++++++++++-------------------
src/preferences/media/MediaWindow.h | 6 +-

############################################################################

Commit: 8acd164f8c6bd3a4d36e49648b7deb676b18e2e0
URL: http://cgit.haiku-os.org/haiku/commit/?id=8acd164f8c6b
Author: Dario Casalinuovo <b.vitruvio@xxxxxxxxx>
Date: Wed Jul 29 16:03:32 2015 UTC

Add new version of launch_media_server

* Due to the needs to provide a peaceful UX, i moved out the
notifications mechanism from the Media preflet and i have
integrated it with the launch and shutdown functions of MediaDefs.h.
* This implied to introduce a new launch_media_server function
similar to the shutdown_media_server allowing to specify a custom
notification function too.
* Both functions then are reworked to send by default notifications
to the Deskbar, this was needed because in a lot of situations
the mechanism failed without correctly noticing the user.
* The one argument launch_media_server is considered to be deprecated,
the default argument is removed to mantain binary compatibility but
make new apps to automatically use the new one with just the default
arguments. This is needed due to conflicts in overloading.
* Improve notifications by indirectly extending localization
to old BeOS apps.

----------------------------------------------------------------------------

diff --git a/headers/os/media/MediaDefs.h b/headers/os/media/MediaDefs.h
index a7fa6d8..a92956e 100644
--- a/headers/os/media/MediaDefs.h
+++ b/headers/os/media/MediaDefs.h
@@ -787,11 +787,21 @@ struct buffer_clone_info;
// media_server and it's friends. You can provide a call back hook which
// will be called during various steps of the process. This callback should
// currently always return TRUE. A 'stage' value of 100 means the process is
-// completely finished.
+// completely finished. Differently from BeOS the functions automatically
+// send notifications to the Deskbar if not differently specified.
+// It's also provided a new version of launch_media_server allowing
+// to specify a custom callback for notifications.
+
+// Deprecated
+status_t launch_media_server(uint32 flags);
+
+status_t launch_media_server(bigtime_t timeout = B_INFINITE_TIMEOUT,
+ bool (*progress)(int stage, const char* message, void* cookie) = NULL,
+ void* cookie = NULL, uint32 flags = 0);
+
status_t shutdown_media_server(bigtime_t timeout = B_INFINITE_TIMEOUT,
bool (*progress)(int stage, const char* message, void* cookie) = NULL,
void* cookie = NULL);
-status_t launch_media_server(uint32 flags = 0);


// Given an image_id, prepare that image_id for realtime media
diff --git a/src/kits/media/Jamfile b/src/kits/media/Jamfile
index f8299db..35cf1d5 100644
--- a/src/kits/media/Jamfile
+++ b/src/kits/media/Jamfile
@@ -89,7 +89,7 @@ for architectureObject in [ MultiArchSubDirSetup ] {
ReaderPlugin.cpp
WriterPlugin.cpp
:
- be [ TargetLibsupc++ ] [ TargetLibstdc++ ]
+ be localestub [ TargetLibsupc++ ] [ TargetLibstdc++ ]
;
}
}
diff --git a/src/kits/media/MediaDefs.cpp b/src/kits/media/MediaDefs.cpp
index 4298a2a..cd6e95a 100644
--- a/src/kits/media/MediaDefs.cpp
+++ b/src/kits/media/MediaDefs.cpp
@@ -1,4 +1,5 @@
/*
+ * Copyright 2015, Dario Casalinuovo
* Copyright 2004, 2006, Jérôme Duval.
* Copyright 2003-2004, Andrew Bachmann.
* Copyright 2002-2004, 2006 Marcus Overhagen.
@@ -7,25 +8,35 @@
*/


-#include <inttypes.h>
-#include <stdio.h>
-#include <string.h>
-
#include <MediaDefs.h>
+
+#include <Application.h>
+#include <Bitmap.h>
+#include <Catalog.h>
+#include <IconUtils.h>
+#include <Locale.h>
#include <MediaNode.h>
#include <MediaRoster.h>
+#include <Node.h>
+#include <Notification.h>
#include <Roster.h>

-#include "debug.h"
+#include <inttypes.h>
+#include <stdio.h>
+#include <string.h>

#include "AddOnManager.h"
#include "DataExchange.h"
+#include "debug.h"
#include "MediaMisc.h"


#define META_DATA_MAX_SIZE (16 << 20)
#define META_DATA_AREA_MIN_SIZE 32000

+#undef B_TRANSLATION_CONTEXT
+#define B_TRANSLATION_CONTEXT "MediaDefs"
+

// #pragma mark - media_destination

@@ -1219,6 +1230,67 @@ const type_code B_CODEC_TYPE_INFO = 0x040807b2;
// shutdown_media_server() and launch_media_server()
// are provided by libbe.so in BeOS R5

+#define MEDIA_SERVICE_NOTIFICATION_ID "MediaServiceNotificationID"
+
+
+void
+notify_system(float progress, const char* message)
+{
+ BNotification notification(B_PROGRESS_NOTIFICATION);
+ notification.SetMessageID(MEDIA_SERVICE_NOTIFICATION_ID);
+ notification.SetProgress(progress);
+ notification.SetGroup(B_TRANSLATE("Media Service"));
+ notification.SetContent(message);
+
+ app_info info;
+ be_app->GetAppInfo(&info);
+ BBitmap icon(BRect(0, 0, 32, 32), B_RGBA32);
+ BNode node(&info.ref);
+ BIconUtils::GetVectorIcon(&node, "BEOS:ICON", &icon);
+ notification.SetIcon(&icon);
+
+ notification.Send();
+}
+
+
+void
+progress_shutdown(int stage,
+ bool (*progress)(int stage, const char* message, void* cookie),
+ void* cookie)
+{
+ // parameter "message" is no longer used. It is kept for compatibility
with
+ // BeOS as this is used as a shutdown_media_server callback.
+
+ PRINT(("stage : %i\n", stage));
+ const char* string = "Unknown stage";
+ switch (stage) {
+ case 10:
+ string = B_TRANSLATE("Stopping media server"
B_UTF8_ELLIPSIS);
+ break;
+ case 20:
+ string = B_TRANSLATE("Telling media_addon_server to
quit.");
+ break;
+ case 40:
+ string = B_TRANSLATE("Waiting for media_server to
quit.");
+ break;
+ case 50:
+ string = B_TRANSLATE("Waiting for media_server to
quit.");
+ break;
+ case 70:
+ string = B_TRANSLATE("Cleaning up.");
+ break;
+ case 100:
+ string = B_TRANSLATE("Done shutting down.");
+ break;
+ }
+
+ if (progress == NULL)
+ notify_system(stage, string);
+ else
+ progress(stage, string, cookie);
+}
+
+
status_t
shutdown_media_server(bigtime_t timeout,
bool (*progress)(int stage, const char* message, void* cookie),
@@ -1233,7 +1305,7 @@ shutdown_media_server(bigtime_t timeout,

if (be_roster->IsRunning(B_MEDIA_SERVER_SIGNATURE)) {
BMessenger messenger(B_MEDIA_SERVER_SIGNATURE);
- progress(10, "Telling media_server to quit.", cookie);
+ progress_shutdown(10, progress, cookie);

err = messenger.SendMessage(&msg, &reply, 2000000, 2000000);
if (err != B_OK)
@@ -1246,7 +1318,7 @@ shutdown_media_server(bigtime_t timeout,

if (be_roster->IsRunning(B_MEDIA_ADDON_SERVER_SIGNATURE)) {
BMessenger messenger(B_MEDIA_ADDON_SERVER_SIGNATURE);
- progress(20, "Telling media_addon_server to quit.", cookie);
+ progress_shutdown(20, progress, cookie);

err = messenger.SendMessage(&msg, &reply, 2000000, 2000000);
if (err != B_OK)
@@ -1258,16 +1330,16 @@ shutdown_media_server(bigtime_t timeout,
}

if (be_roster->IsRunning(B_MEDIA_SERVER_SIGNATURE)) {
- progress(40, "Waiting for media_server to quit.", cookie);
+ progress_shutdown(40, progress, cookie);
snooze(200000);
}

if (be_roster->IsRunning(B_MEDIA_ADDON_SERVER_SIGNATURE)) {
- progress(50, "Waiting for media_addon_server to quit.", cookie);
+ progress_shutdown(50, progress, cookie);
snooze(200000);
}

- progress(70, "Cleaning Up.", cookie);
+ progress_shutdown(70, progress, cookie);
snooze(1000000);

if (be_roster->IsRunning(B_MEDIA_SERVER_SIGNATURE)) {
@@ -1278,31 +1350,79 @@ shutdown_media_server(bigtime_t timeout,
kill_team(be_roster->TeamFor(B_MEDIA_ADDON_SERVER_SIGNATURE));
}

- progress(100, "Done Shutting Down.", cookie);
+ progress_shutdown(100, progress, cookie);
snooze(1000000);

return B_OK;
}


+void
+progress_startup(int stage,
+ bool (*progress)(int stage, const char* message, void* cookie),
+ void* cookie)
+{
+ // parameter "message" is no longer used. It is kept for compatibility
with
+ // BeOS as this is used as a shutdown_media_server callback.
+
+ PRINT(("stage : %i\n", stage));
+ const char* string = "Unknown stage";
+ switch (stage) {
+ case 10:
+ string = B_TRANSLATE("Stopping media server"
B_UTF8_ELLIPSIS);
+ break;
+ case 20:
+ string = B_TRANSLATE("Telling media_addon_server to
quit.");
+ break;
+ case 50:
+ string = B_TRANSLATE("Starting media_services.");
+ break;
+ case 90:
+ string = B_TRANSLATE("Error occurred starting media
services.");
+ break;
+ case 100:
+ string = B_TRANSLATE("Ready for use.");
+ break;
+ }
+
+ if (progress == NULL)
+ notify_system(stage, string);
+ else
+ progress(stage, string, cookie);
+}
+
+
status_t
launch_media_server(uint32 flags)
{
+ return launch_media_server(0, NULL, NULL, flags);
+}
+
+
+status_t
+launch_media_server(bigtime_t timeout,
+ bool (*progress)(int stage, const char* message, void* cookie),
+ void* cookie, uint32 flags)
+{
if (BMediaRoster::IsRunning())
return B_ALREADY_RUNNING;

// The media_server crashed
if (be_roster->IsRunning(B_MEDIA_ADDON_SERVER_SIGNATURE)) {
+ progress_startup(10, progress, cookie);
kill_team(be_roster->TeamFor(B_MEDIA_ADDON_SERVER_SIGNATURE));
snooze(1000000);
}

// The media_addon_server crashed
if (be_roster->IsRunning(B_MEDIA_SERVER_SIGNATURE)) {
+ progress_startup(20, progress, cookie);
kill_team(be_roster->TeamFor(B_MEDIA_SERVER_SIGNATURE));
snooze(1000000);
}

+ progress_startup(50, progress, cookie);
+
status_t err = be_roster->Launch(B_MEDIA_SERVER_SIGNATURE);
if (err != B_OK)
return err;
@@ -1318,10 +1438,14 @@ launch_media_server(uint32 flags)
if (messenger.IsValid()) {
messenger.SendMessage(&msg, &reply, 2000000, 2000000);
err = B_OK;
+ progress_startup(100, progress, cookie);
break;
}
}

+ if (err != B_OK)
+ progress_startup(90, progress, cookie);
+
return err;
}


############################################################################

Revision: hrev49474
Commit: 7482390ab4dc1e77ccb42b4f2c290b5bfe814f7f
URL: http://cgit.haiku-os.org/haiku/commit/?id=7482390ab4dc
Author: Dario Casalinuovo <b.vitruvio@xxxxxxxxx>
Date: Wed Jul 29 14:59:19 2015 UTC

Media: Improve both notifications and quit mechanism

* Media is now waiting for media_server to start if the window
is closed before to finish, this was proposed by stippi.
* Moved out anything related to notifications as they are now
managed by the media_kit.
* Solved some TODOs and minor issues too.

----------------------------------------------------------------------------

diff --git a/src/preferences/media/Media.cpp b/src/preferences/media/Media.cpp
index c9f9cb1..74fbd73 100644
--- a/src/preferences/media/Media.cpp
+++ b/src/preferences/media/Media.cpp
@@ -20,7 +20,7 @@

Media::Media()
:
- BApplication(kApplicationSignature),
+ BApplication("application/x-vnd.Haiku-Media"),
fIcons(),
fWindow(NULL)
{
diff --git a/src/preferences/media/Media.h b/src/preferences/media/Media.h
index b62d538..b8fb227 100644
--- a/src/preferences/media/Media.h
+++ b/src/preferences/media/Media.h
@@ -17,9 +17,6 @@
#include <Locale.h>


-static const char* kApplicationSignature = "application/x-vnd.Haiku-Media";
-
-
class Media : public BApplication {
public:
Media();
diff --git a/src/preferences/media/MediaViews.cpp
b/src/preferences/media/MediaViews.cpp
index 1709684..87e8696 100644
--- a/src/preferences/media/MediaViews.cpp
+++ b/src/preferences/media/MediaViews.cpp
@@ -62,7 +62,8 @@ SettingsView::MakeRestartButton()
{
return new BButton("restartButton",
B_TRANSLATE("Restart media services"),
- new BMessage(ML_RESTART_MEDIA_SERVER));
+ new BMessage(ML_RESTART_MEDIA_SERVER),
+ B_ALIGN_RIGHT);
}


diff --git a/src/preferences/media/MediaWindow.cpp
b/src/preferences/media/MediaWindow.cpp
index 77864d6..73006eb 100644
--- a/src/preferences/media/MediaWindow.cpp
+++ b/src/preferences/media/MediaWindow.cpp
@@ -15,7 +15,6 @@
#include <Alert.h>
#include <Application.h>
#include <Autolock.h>
-#include <Bitmap.h>
#include <Button.h>
#include <CardLayout.h>
#include <Catalog.h>
@@ -26,7 +25,6 @@
#include <Locale.h>
#include <MediaRoster.h>
#include <MediaTheme.h>
-#include <Notification.h>
#include <Resources.h>
#include <Roster.h>
#include <Screen.h>
@@ -46,7 +44,7 @@


const uint32 ML_SELECTED_NODE = 'MlSN';
-const uint32 ML_INIT_MEDIA = 'MlIM';
+const uint32 ML_RESTART_THREAD_FINISHED = 'MlRF';


class NodeListItemUpdater : public MediaListItem::Visitor {
@@ -101,13 +99,23 @@ MediaWindow::SmartNode::SetTo(const dormant_node_info*
info)
fNode = new media_node();
BMediaRoster* roster = BMediaRoster::Roster();

- // TODO: error codes
+ status_t status = B_OK;
media_node_id node_id;
if (roster->GetInstancesFor(info->addon, info->flavor_id, &node_id) ==
B_OK)
- roster->GetNodeFor(node_id, fNode);
+ status = roster->GetNodeFor(node_id, fNode);
else
- roster->InstantiateDormantNode(*info, fNode,
B_FLAVOR_IS_GLOBAL);
- roster->StartWatching(fMessenger, *fNode, B_MEDIA_WILDCARD);
+ status = roster->InstantiateDormantNode(*info, fNode,
B_FLAVOR_IS_GLOBAL);
+
+ if (status != B_OK) {
+ fprintf(stderr, "SmartNode::SetTo error with node %" B_PRId32
+ ": %s\n", fNode->node, strerror(status));
+ }
+
+ status = roster->StartWatching(fMessenger, *fNode, B_MEDIA_WILDCARD);
+ if (status != B_OK) {
+ fprintf(stderr, "SmartNode::SetTo can't start watching for"
+ " node %" B_PRId32 "\n", fNode->node);
+ }
}


@@ -142,10 +150,22 @@ MediaWindow::SmartNode::_FreeNode()
{
if (!IsSet())
return;
- // TODO: check error codes
+
BMediaRoster* roster = BMediaRoster::Roster();
- roster->StopWatching(fMessenger, *fNode, B_MEDIA_WILDCARD);
- roster->ReleaseNode(*fNode);
+ if (roster != NULL) {
+ status_t status = roster->StopWatching(fMessenger,
+ *fNode, B_MEDIA_WILDCARD);
+ if (status != B_OK) {
+ fprintf(stderr, "SmartNode::_FreeNode can't unwatch"
+ " media services for node %" B_PRId32 "\n",
fNode->node);
+ }
+
+ roster->ReleaseNode(*fNode);
+ if (status != B_OK) {
+ fprintf(stderr, "SmartNode::_FreeNode can't release"
+ " node %" B_PRId32 "\n", fNode->node);
+ }
+ }
delete fNode;
fNode = NULL;
}
@@ -165,7 +185,7 @@ MediaWindow::MediaWindow(BRect frame)
fVideoInputs(5, true),
fVideoOutputs(5, true),
fInitCheck(B_OK),
- fRestartingServices(false)
+ fRestartThread(-1)
{
_InitWindow();

@@ -283,21 +303,15 @@
MediaWindow::UpdateOutputListItem(MediaListItem::media_type type,
bool
MediaWindow::QuitRequested()
{
- if (fRestartingServices == true) {
- BString text(B_TRANSLATE("The media services are restarting,"
- " interructions to this process might result"
- " in media functionalities not correctly running."
- " Are you really sure to quit?"));
-
- BAlert* alert = new BAlert(B_TRANSLATE("Warning!"), text,
- B_TRANSLATE("Do it"), B_TRANSLATE("No"), NULL,
- B_WIDTH_AS_USUAL, B_OFFSET_SPACING, B_WARNING_ALERT);
- int32 ret = alert->Go();
- if (ret == 1)
- return false;
+ status_t exit = B_OK;
+ if (fRestartThread > 0) {
+ wait_for_thread(fRestartThread, &exit);
+ if (exit != B_OK) {
+ fprintf(stderr, "MediaWindow::QuitRequested
wait_for_thread"
+ " returned with an error: %s\n",
strerror(exit));
+ }
}
-
- // stop watching the MediaRoster
+ // Stop watching the MediaRoster
fCurrentNode.SetTo(NULL);
be_app->PostMessage(B_QUIT_REQUESTED);
return true;
@@ -308,18 +322,18 @@ void
MediaWindow::MessageReceived(BMessage* message)
{
switch (message->what) {
- case ML_INIT_MEDIA:
- _InitMedia(false);
+ case ML_RESTART_THREAD_FINISHED:
+ fRestartThread = -1;
break;
+
case ML_RESTART_MEDIA_SERVER:
{
- fRestartingServices = true;
- thread_id thread =
spawn_thread(&MediaWindow::_RestartMediaServices,
+ fRestartThread =
spawn_thread(&MediaWindow::_RestartMediaServices,
"restart_thread", B_NORMAL_PRIORITY, this);
- if (thread < 0)
+ if (fRestartThread < 0)
fprintf(stderr, "couldn't create restart
thread\n");
else
- resume_thread(thread);
+ resume_thread(fRestartThread);
break;
}
case B_MEDIA_WEB_CHANGED:
@@ -340,9 +354,7 @@ MediaWindow::MessageReceived(BMessage* message)
case B_MEDIA_SERVER_STARTED:
{
PRINT_OBJECT(*message);
-
- _Notify(0.75, B_TRANSLATE("Starting media server"
- B_UTF8_ELLIPSIS));
+ _InitMedia(false);
break;
}
default:
@@ -421,8 +433,6 @@ MediaWindow::_InitMedia(bool first)
if (alert->Go() == 0)
return B_ERROR;

- _Notify(0, B_TRANSLATE("Starting media server"
B_UTF8_ELLIPSIS));
-
Show();

launch_media_server();
@@ -435,9 +445,6 @@ MediaWindow::_InitMedia(bool first)
&& fListView->ItemAt(0)->IsSelected())
isVideoSelected = false;

- if (!first || (first && err) )
- _Notify(1, B_TRANSLATE("Ready for use" B_UTF8_ELLIPSIS));
-
while (fListView->CountItems() > 0)
delete fListView->RemoveItem((int32)0);
_EmptyNodeLists();
@@ -639,65 +646,10 @@ MediaWindow::_RestartMediaServices(void* data)
{
MediaWindow* window = (MediaWindow*)data;

- shutdown_media_server(B_INFINITE_TIMEOUT, MediaWindow::_UpdateProgress,
- data);
-
+ shutdown_media_server();
launch_media_server();

- window->fRestartingServices = false;
- return window->PostMessage(ML_INIT_MEDIA);
-}
-
-
-bool
-MediaWindow::_UpdateProgress(int stage, const char* message, void* cookie)
-{
- // parameter "message" is no longer used. It is kept for compatibility
with
- // BeOS as this is used as a shutdown_media_server callback.
-
- PRINT(("stage : %i\n", stage));
- const char* string = "Unknown stage";
- switch (stage) {
- case 10:
- string = B_TRANSLATE("Stopping media server"
B_UTF8_ELLIPSIS);
- break;
- case 20:
- string = B_TRANSLATE("Telling media_addon_server to
quit.");
- break;
- case 40:
- string = B_TRANSLATE("Waiting for media_server to
quit.");
- break;
- case 70:
- string = B_TRANSLATE("Cleaning up.");
- break;
- case 100:
- string = B_TRANSLATE("Done shutting down.");
- break;
- }
-
- ((MediaWindow*)cookie)->_Notify(stage / 150.0, string);
-
- return true;
-}
-
-
-void
-MediaWindow::_Notify(float progress, const char* message)
-{
- BNotification notification(B_PROGRESS_NOTIFICATION);
- notification.SetMessageID(MEDIA_SERVICE_NOTIFICATION_ID);
- notification.SetProgress(progress);
- notification.SetGroup(B_TRANSLATE("Media Service"));
- notification.SetContent(message);
-
- app_info info;
- be_roster->GetAppInfo(kApplicationSignature, &info);
- BBitmap icon(BRect(0, 0, 32, 32), B_RGBA32);
- BNode node(&info.ref);
- BIconUtils::GetVectorIcon(&node, "BEOS:ICON", &icon);
- notification.SetIcon(&icon);
-
- notification.Send();
+ return window->PostMessage(ML_RESTART_THREAD_FINISHED);
}


diff --git a/src/preferences/media/MediaWindow.h
b/src/preferences/media/MediaWindow.h
index d76fee6..5d75867 100644
--- a/src/preferences/media/MediaWindow.h
+++ b/src/preferences/media/MediaWindow.h
@@ -22,7 +22,6 @@
#include "MediaListItem.h"
#include "MediaViews.h"

-#define MEDIA_SERVICE_NOTIFICATION_ID "MediaServiceNotificationID"
#define SETTINGS_FILE "MediaPrefs Settings"


@@ -72,9 +71,6 @@ private:
NodeListItem*
_FindNodeListItem(dormant_node_info* info);

static status_t _RestartMediaServices(void*
data);
- static bool _UpdateProgress(int stage,
const char* message,
- void*
cookie);
- void _Notify(float progress,
const char* message);

void _ClearParamView();
void _MakeParamView();
@@ -112,7 +108,7 @@ private:
NodeList fVideoOutputs;

status_t fInitCheck;
- bool fRestartingServices;
+ thread_id fRestartThread;
};




Other related posts:

  • » [haiku-commits] haiku: hrev49474 - src/preferences/media src/kits/media headers/os/media - b . vitruvio