* Applied patch by Adrian to fix the command structures used for the media

server with GCC4 in a GCC2 system (and vice versa). See #4920 which this
  patch closes, too.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33997 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Axel Dörfler
2009-11-11 09:16:32 +00:00
parent 5042148821
commit 8e4966ebca
+27 -21
View File
@@ -1,4 +1,4 @@
/* /*
* Copyright 2002, Marcus Overhagen. All rights reserved. * Copyright 2002, Marcus Overhagen. All rights reserved.
* Copyright 2009, Axel Dörfler, [email protected]. * Copyright 2009, Axel Dörfler, [email protected].
* *
@@ -7,6 +7,7 @@
#ifndef _DATA_EXCHANGE_H #ifndef _DATA_EXCHANGE_H
#define _DATA_EXCHANGE_H #define _DATA_EXCHANGE_H
#include <string.h> #include <string.h>
#include <MediaFormats.h> #include <MediaFormats.h>
@@ -60,6 +61,11 @@ struct reply_data {
// The base struct used for all raw commands (asynchronous, no answer) // The base struct used for all raw commands (asynchronous, no answer)
struct command_data { struct command_data {
// yes, it's empty ;) // yes, it's empty ;)
#if __GNUC__ == 4
int32 _padding;
// GCC 2 and GCC 4 treat empty structures differently
#endif
}; };
// The base struct used for all requests using an area // The base struct used for all requests using an area
@@ -137,7 +143,7 @@ enum {
SERVER_GET_ENCODER_FOR_CODEC_INFO, SERVER_GET_ENCODER_FOR_CODEC_INFO,
SERVER_MESSAGE_END, SERVER_MESSAGE_END,
NODE_MESSAGE_START = 0x200, NODE_MESSAGE_START = 0x200,
NODE_START, NODE_START,
NODE_STOP, NODE_STOP,
NODE_SEEK, NODE_SEEK,
@@ -148,7 +154,7 @@ enum {
NODE_GET_TIMESOURCE, NODE_GET_TIMESOURCE,
NODE_REQUEST_COMPLETED, NODE_REQUEST_COMPLETED,
NODE_FINAL_RELEASE, NODE_FINAL_RELEASE,
NODE_MESSAGE_END, NODE_MESSAGE_END,
CONSUMER_MESSAGE_START = 0x300, CONSUMER_MESSAGE_START = 0x300,
CONSUMER_GET_NEXT_INPUT, CONSUMER_GET_NEXT_INPUT,
@@ -156,13 +162,13 @@ enum {
CONSUMER_ACCEPT_FORMAT, CONSUMER_ACCEPT_FORMAT,
CONSUMER_CONNECTED, CONSUMER_CONNECTED,
CONSUMER_DISCONNECTED, CONSUMER_DISCONNECTED,
CONSUMER_BUFFER_RECEIVED, CONSUMER_BUFFER_RECEIVED,
CONSUMER_PRODUCER_DATA_STATUS, CONSUMER_PRODUCER_DATA_STATUS,
CONSUMER_GET_LATENCY_FOR, CONSUMER_GET_LATENCY_FOR,
CONSUMER_FORMAT_CHANGED, CONSUMER_FORMAT_CHANGED,
CONSUMER_SEEK_TAG_REQUESTED, CONSUMER_SEEK_TAG_REQUESTED,
CONSUMER_MESSAGE_END, CONSUMER_MESSAGE_END,
PRODUCER_MESSAGE_START = 0x400, PRODUCER_MESSAGE_START = 0x400,
PRODUCER_GET_NEXT_OUTPUT, PRODUCER_GET_NEXT_OUTPUT,
@@ -171,7 +177,7 @@ enum {
PRODUCER_PREPARE_TO_CONNECT, PRODUCER_PREPARE_TO_CONNECT,
PRODUCER_CONNECT, PRODUCER_CONNECT,
PRODUCER_DISCONNECT, PRODUCER_DISCONNECT,
PRODUCER_LATE_NOTICE_RECEIVED, PRODUCER_LATE_NOTICE_RECEIVED,
PRODUCER_LATENCY_CHANGED, PRODUCER_LATENCY_CHANGED,
PRODUCER_ADDITIONAL_BUFFER_REQUESTED, PRODUCER_ADDITIONAL_BUFFER_REQUESTED,
@@ -184,7 +190,7 @@ enum {
PRODUCER_SET_PLAY_RATE, PRODUCER_SET_PLAY_RATE,
PRODUCER_ENABLE_OUTPUT, PRODUCER_ENABLE_OUTPUT,
PRODUCER_SET_RUN_MODE_DELAY, PRODUCER_SET_RUN_MODE_DELAY,
PRODUCER_MESSAGE_END, PRODUCER_MESSAGE_END,
FILEINTERFACE_MESSAGE_START = 0x500, FILEINTERFACE_MESSAGE_START = 0x500,
FILEINTERFACE_SET_REF, FILEINTERFACE_SET_REF,
@@ -198,12 +204,12 @@ enum {
CONTROLLABLE_START_CONTROL_PANEL, CONTROLLABLE_START_CONTROL_PANEL,
CONTROLLABLE_MESSAGE_END, CONTROLLABLE_MESSAGE_END,
TIMESOURCE_MESSAGE_START = 0x700, TIMESOURCE_MESSAGE_START = 0x700,
TIMESOURCE_OP, // datablock is a struct time_source_op_info TIMESOURCE_OP, // datablock is a struct time_source_op_info
TIMESOURCE_ADD_SLAVE_NODE, TIMESOURCE_ADD_SLAVE_NODE,
TIMESOURCE_REMOVE_SLAVE_NODE, TIMESOURCE_REMOVE_SLAVE_NODE,
TIMESOURCE_GET_START_LATENCY, TIMESOURCE_GET_START_LATENCY,
TIMESOURCE_MESSAGE_END, TIMESOURCE_MESSAGE_END,
}; };
@@ -246,15 +252,15 @@ private:
}; };
// used by SERVER_GET_NODE and SERVER_SET_NODE // used by SERVER_GET_NODE and SERVER_SET_NODE
enum node_type { enum node_type {
VIDEO_INPUT, VIDEO_INPUT,
AUDIO_INPUT, AUDIO_INPUT,
VIDEO_OUTPUT, VIDEO_OUTPUT,
AUDIO_MIXER, AUDIO_MIXER,
AUDIO_OUTPUT, AUDIO_OUTPUT,
AUDIO_OUTPUT_EX, AUDIO_OUTPUT_EX,
TIME_SOURCE, TIME_SOURCE,
SYSTEM_TIME_SOURCE SYSTEM_TIME_SOURCE
}; };
// used by SERVER_PUBLISH_INPUTS and SERVER_PUBLISH_OUTPUTS // used by SERVER_PUBLISH_INPUTS and SERVER_PUBLISH_OUTPUTS
@@ -654,7 +660,7 @@ struct server_get_live_nodes_reply : area_reply_data {
int32 count; int32 count;
// if count > MAX_LIVE_INFO, live_node_infos are in the area // if count > MAX_LIVE_INFO, live_node_infos are in the area
// area is created in the server, but deleted in the library // area is created in the server, but deleted in the library
live_node_info live_info[MAX_LIVE_INFO]; live_node_info live_info[MAX_LIVE_INFO];
}; };
struct server_node_id_for_request : request_data { struct server_node_id_for_request : request_data {
@@ -862,11 +868,11 @@ struct node_request_completed_command : command_data {
}; };
struct node_start_command : command_data { struct node_start_command : command_data {
bigtime_t performance_time; bigtime_t performance_time;
}; };
struct node_stop_command : command_data { struct node_stop_command : command_data {
bigtime_t performance_time; bigtime_t performance_time;
bool immediate; bool immediate;
}; };