mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-10-29 05:40:23 -04:00
object: speed up type verification by not relying on strcmp()
Instead of using string contents for type identification use the address of a constant string array. This should speed up type verifications a little sind we only need to compare one machine word instead of a full string. Also, this saves a few strings. To make clear that types must be compared via address and not string contents 'type_name' is now called 'type_id'. This also simplifies the macros for declaring and defining public and private subclasses.
This commit is contained in:
parent
5317e35543
commit
9abc010c93
19 changed files with 73 additions and 65 deletions
|
|
@ -98,17 +98,15 @@ typedef struct record_stream {
|
|||
pa_usec_t current_source_latency;
|
||||
} record_stream;
|
||||
|
||||
PA_DECLARE_CLASS(record_stream);
|
||||
#define RECORD_STREAM(o) (record_stream_cast(o))
|
||||
static PA_DEFINE_CHECK_TYPE(record_stream, pa_msgobject);
|
||||
PA_DEFINE_PRIVATE_CLASS(record_stream, pa_msgobject);
|
||||
|
||||
typedef struct output_stream {
|
||||
pa_msgobject parent;
|
||||
} output_stream;
|
||||
|
||||
PA_DECLARE_CLASS(output_stream);
|
||||
#define OUTPUT_STREAM(o) (output_stream_cast(o))
|
||||
static PA_DEFINE_CHECK_TYPE(output_stream, pa_msgobject);
|
||||
PA_DEFINE_PRIVATE_CLASS(output_stream, pa_msgobject);
|
||||
|
||||
typedef struct playback_stream {
|
||||
output_stream parent;
|
||||
|
|
@ -138,9 +136,8 @@ typedef struct playback_stream {
|
|||
uint64_t playing_for, underrun_for;
|
||||
} playback_stream;
|
||||
|
||||
PA_DECLARE_CLASS(playback_stream);
|
||||
#define PLAYBACK_STREAM(o) (playback_stream_cast(o))
|
||||
static PA_DEFINE_CHECK_TYPE(playback_stream, output_stream);
|
||||
PA_DEFINE_PRIVATE_CLASS(playback_stream, output_stream);
|
||||
|
||||
typedef struct upload_stream {
|
||||
output_stream parent;
|
||||
|
|
@ -156,9 +153,8 @@ typedef struct upload_stream {
|
|||
pa_proplist *proplist;
|
||||
} upload_stream;
|
||||
|
||||
PA_DECLARE_CLASS(upload_stream);
|
||||
#define UPLOAD_STREAM(o) (upload_stream_cast(o))
|
||||
static PA_DEFINE_CHECK_TYPE(upload_stream, output_stream);
|
||||
PA_DEFINE_PRIVATE_CLASS(upload_stream, output_stream);
|
||||
|
||||
struct pa_native_connection {
|
||||
pa_msgobject parent;
|
||||
|
|
@ -176,9 +172,8 @@ struct pa_native_connection {
|
|||
pa_time_event *auth_timeout_event;
|
||||
};
|
||||
|
||||
PA_DECLARE_CLASS(pa_native_connection);
|
||||
#define PA_NATIVE_CONNECTION(o) (pa_native_connection_cast(o))
|
||||
static PA_DEFINE_CHECK_TYPE(pa_native_connection, pa_msgobject);
|
||||
PA_DEFINE_PRIVATE_CLASS(pa_native_connection, pa_msgobject);
|
||||
|
||||
struct pa_native_protocol {
|
||||
PA_REFCNT_DECLARE;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue