mirror of
https://github.com/yann64/haikuports.git
synced 2026-05-04 22:18:55 +02:00
463 lines
15 KiB
Plaintext
463 lines
15 KiB
Plaintext
From 5eb650e32842dd21d764aad9ea8f9977b4b11477 Mon Sep 17 00:00:00 2001
|
|
From: Gerasim Troeglazov <3dEyes@gmail.com>
|
|
Date: Mon, 21 May 2018 20:18:03 +1000
|
|
Subject: Fix opus header path
|
|
|
|
|
|
diff --git a/libtgvoip-ed3a899bbe26c56dc25e40730ca6d0e95f59717d/OpusDecoder.h b/libtgvoip-ed3a899bbe26c56dc25e40730ca6d0e95f59717d/OpusDecoder.h
|
|
index 1a88ce5..e8389f5 100644
|
|
--- a/libtgvoip-ed3a899bbe26c56dc25e40730ca6d0e95f59717d/OpusDecoder.h
|
|
+++ b/libtgvoip-ed3a899bbe26c56dc25e40730ca6d0e95f59717d/OpusDecoder.h
|
|
@@ -9,7 +9,11 @@
|
|
|
|
|
|
#include "MediaStreamItf.h"
|
|
+#ifdef __HAIKU__
|
|
+#include <opus/opus.h>
|
|
+#else
|
|
#include "opus.h"
|
|
+#endif
|
|
#include "threading.h"
|
|
#include "BlockingQueue.h"
|
|
#include "BufferPool.h"
|
|
diff --git a/libtgvoip-ed3a899bbe26c56dc25e40730ca6d0e95f59717d/OpusEncoder.h b/libtgvoip-ed3a899bbe26c56dc25e40730ca6d0e95f59717d/OpusEncoder.h
|
|
index 9329f89..b2a9305 100644
|
|
--- a/libtgvoip-ed3a899bbe26c56dc25e40730ca6d0e95f59717d/OpusEncoder.h
|
|
+++ b/libtgvoip-ed3a899bbe26c56dc25e40730ca6d0e95f59717d/OpusEncoder.h
|
|
@@ -9,7 +9,11 @@
|
|
|
|
|
|
#include "MediaStreamItf.h"
|
|
+#ifdef __HAIKU__
|
|
+#include <opus/opus.h>
|
|
+#else
|
|
#include "opus.h"
|
|
+#endif
|
|
#include "threading.h"
|
|
#include "BlockingQueue.h"
|
|
#include "BufferPool.h"
|
|
--
|
|
2.16.2
|
|
|
|
|
|
From 19836869446c2ef6c5883caab8e748801963c952 Mon Sep 17 00:00:00 2001
|
|
From: Gerasim Troeglazov <3dEyes@gmail.com>
|
|
Date: Mon, 21 May 2018 20:19:19 +1000
|
|
Subject: Add haiku
|
|
|
|
|
|
diff --git a/libtgvoip-ed3a899bbe26c56dc25e40730ca6d0e95f59717d/audio/AudioInput.cpp b/libtgvoip-ed3a899bbe26c56dc25e40730ca6d0e95f59717d/audio/AudioInput.cpp
|
|
index cc552ab..5b7b8eb 100644
|
|
--- a/libtgvoip-ed3a899bbe26c56dc25e40730ca6d0e95f59717d/audio/AudioInput.cpp
|
|
+++ b/libtgvoip-ed3a899bbe26c56dc25e40730ca6d0e95f59717d/audio/AudioInput.cpp
|
|
@@ -22,6 +22,8 @@
|
|
#elif defined(__linux__)
|
|
#include "../os/linux/AudioInputALSA.h"
|
|
#include "../os/linux/AudioInputPulse.h"
|
|
+#elif defined(__HAIKU__)
|
|
+#include "../os/haiku/AudioInputHaiku.h"
|
|
#else
|
|
#error "Unsupported operating system"
|
|
#endif
|
|
diff --git a/libtgvoip-ed3a899bbe26c56dc25e40730ca6d0e95f59717d/audio/AudioOutput.cpp b/libtgvoip-ed3a899bbe26c56dc25e40730ca6d0e95f59717d/audio/AudioOutput.cpp
|
|
index a6364bc..0e5516a 100644
|
|
--- a/libtgvoip-ed3a899bbe26c56dc25e40730ca6d0e95f59717d/audio/AudioOutput.cpp
|
|
+++ b/libtgvoip-ed3a899bbe26c56dc25e40730ca6d0e95f59717d/audio/AudioOutput.cpp
|
|
@@ -23,6 +23,8 @@
|
|
#elif defined(__linux__)
|
|
#include "../os/linux/AudioOutputALSA.h"
|
|
#include "../os/linux/AudioOutputPulse.h"
|
|
+#elif defined(__HAIKU__)
|
|
+#include "../os/haiku/AudioOutputHaiku.h"
|
|
#else
|
|
#error "Unsupported operating system"
|
|
#endif
|
|
diff --git a/libtgvoip-ed3a899bbe26c56dc25e40730ca6d0e95f59717d/libtgvoip.gyp b/libtgvoip-ed3a899bbe26c56dc25e40730ca6d0e95f59717d/libtgvoip.gyp
|
|
index 5ff19f6..9523ea3 100644
|
|
--- a/libtgvoip-ed3a899bbe26c56dc25e40730ca6d0e95f59717d/libtgvoip.gyp
|
|
+++ b/libtgvoip-ed3a899bbe26c56dc25e40730ca6d0e95f59717d/libtgvoip.gyp
|
|
@@ -87,18 +87,12 @@
|
|
'<(tgvoip_src_loc)/os/darwin/AudioUnitIO.h',
|
|
'<(tgvoip_src_loc)/os/darwin/DarwinSpecific.mm',
|
|
'<(tgvoip_src_loc)/os/darwin/DarwinSpecific.h',
|
|
-
|
|
- # Linux
|
|
- '<(tgvoip_src_loc)/os/linux/AudioInputALSA.cpp',
|
|
- '<(tgvoip_src_loc)/os/linux/AudioInputALSA.h',
|
|
- '<(tgvoip_src_loc)/os/linux/AudioOutputALSA.cpp',
|
|
- '<(tgvoip_src_loc)/os/linux/AudioOutputALSA.h',
|
|
- '<(tgvoip_src_loc)/os/linux/AudioOutputPulse.cpp',
|
|
- '<(tgvoip_src_loc)/os/linux/AudioOutputPulse.h',
|
|
- '<(tgvoip_src_loc)/os/linux/AudioInputPulse.cpp',
|
|
- '<(tgvoip_src_loc)/os/linux/AudioInputPulse.h',
|
|
- '<(tgvoip_src_loc)/os/linux/PulseAudioLoader.cpp',
|
|
- '<(tgvoip_src_loc)/os/linux/PulseAudioLoader.h',
|
|
+
|
|
+ # Haiku
|
|
+ '<(tgvoip_src_loc)/os/haiku/AudioInputHaiku.cpp',
|
|
+ '<(tgvoip_src_loc)/os/haiku/AudioInputHaiku.h',
|
|
+ '<(tgvoip_src_loc)/os/haiku/AudioOutputHaiku.cpp',
|
|
+ '<(tgvoip_src_loc)/os/haiku/AudioOutputHaiku.h',
|
|
|
|
# POSIX
|
|
'<(tgvoip_src_loc)/os/posix/NetworkSocketPosix.cpp',
|
|
@@ -258,6 +252,11 @@
|
|
'sources/': [['exclude', '<(tgvoip_src_loc)/os/darwin/']],
|
|
},
|
|
],
|
|
+ [
|
|
+ '"<(OS)" != "haiku"', {
|
|
+ 'sources/': [['exclude', '<(tgvoip_src_loc)/os/haiku/']],
|
|
+ },
|
|
+ ],
|
|
[
|
|
'"<(OS)" != "linux"', {
|
|
'sources/': [['exclude', '<(tgvoip_src_loc)/os/linux/']],
|
|
@@ -377,6 +376,22 @@
|
|
},
|
|
},
|
|
],
|
|
+ [
|
|
+ '"<(OS)" == "haiku"', {
|
|
+ 'defines': [
|
|
+ 'WEBRTC_POSIX',
|
|
+ ],
|
|
+ 'cflags_cc': [
|
|
+ '-msse2',
|
|
+ '-std=gnu++14',
|
|
+ ],
|
|
+ 'direct_dependent_settings': {
|
|
+ 'libraries': [
|
|
+
|
|
+ ],
|
|
+ },
|
|
+ },
|
|
+ ],
|
|
[
|
|
'"<(OS)" == "linux"', {
|
|
'defines': [
|
|
diff --git a/libtgvoip-ed3a899bbe26c56dc25e40730ca6d0e95f59717d/os/posix/NetworkSocketPosix.cpp b/libtgvoip-ed3a899bbe26c56dc25e40730ca6d0e95f59717d/os/posix/NetworkSocketPosix.cpp
|
|
index a0ddd5f..f55f054 100644
|
|
--- a/libtgvoip-ed3a899bbe26c56dc25e40730ca6d0e95f59717d/os/posix/NetworkSocketPosix.cpp
|
|
+++ b/libtgvoip-ed3a899bbe26c56dc25e40730ca6d0e95f59717d/os/posix/NetworkSocketPosix.cpp
|
|
@@ -40,6 +40,7 @@ NetworkSocketPosix::~NetworkSocketPosix(){
|
|
}
|
|
|
|
void NetworkSocketPosix::SetMaxPriority(){
|
|
+#ifndef __HAIKU__
|
|
#ifdef __APPLE__
|
|
int prio=NET_SERVICE_TYPE_VO;
|
|
int res=setsockopt(fd, SOL_SOCKET, SO_NET_SERVICE_TYPE, &prio, sizeof(prio));
|
|
@@ -58,6 +59,7 @@ void NetworkSocketPosix::SetMaxPriority(){
|
|
LOGE("error setting ip tos: %d / %s", errno, strerror(errno));
|
|
}
|
|
#endif
|
|
+#endif
|
|
}
|
|
|
|
void NetworkSocketPosix::Send(NetworkPacket *packet){
|
|
@@ -299,6 +301,10 @@ void NetworkSocketPosix::OnActiveInterfaceChanged(){
|
|
}
|
|
|
|
std::string NetworkSocketPosix::GetLocalInterfaceInfo(IPv4Address *v4addr, IPv6Address *v6addr){
|
|
+#ifdef __HAIKU__
|
|
+ std::string name="";
|
|
+ return name;
|
|
+#else
|
|
struct ifconf ifc;
|
|
struct ifreq* ifr;
|
|
char buf[16384];
|
|
@@ -348,6 +354,7 @@ std::string NetworkSocketPosix::GetLocalInterfaceInfo(IPv4Address *v4addr, IPv6A
|
|
}
|
|
close(sd);
|
|
return name;
|
|
+#endif
|
|
}
|
|
|
|
uint16_t NetworkSocketPosix::GetLocalPort(){
|
|
diff --git a/libtgvoip-ed3a899bbe26c56dc25e40730ca6d0e95f59717d/threading.h b/libtgvoip-ed3a899bbe26c56dc25e40730ca6d0e95f59717d/threading.h
|
|
index 8a6f438..c45d3fb 100644
|
|
--- a/libtgvoip-ed3a899bbe26c56dc25e40730ca6d0e95f59717d/threading.h
|
|
+++ b/libtgvoip-ed3a899bbe26c56dc25e40730ca6d0e95f59717d/threading.h
|
|
@@ -7,7 +7,7 @@
|
|
#ifndef __THREADING_H
|
|
#define __THREADING_H
|
|
|
|
-#if defined(_POSIX_THREADS) || defined(_POSIX_VERSION) || defined(__unix__) || defined(__unix) || (defined(__APPLE__) && defined(__MACH__))
|
|
+#if defined(_POSIX_THREADS) || defined(_POSIX_VERSION) || defined(__unix__) || defined(__unix) || (defined(__APPLE__) && defined(__MACH__)) || defined(__HAIKU__)
|
|
|
|
#include <pthread.h>
|
|
#include <semaphore.h>
|
|
@@ -19,7 +19,7 @@ typedef pthread_cond_t tgvoip_lock_t;
|
|
|
|
#define start_thread(ref, entry, arg) pthread_create(&ref, NULL, entry, arg)
|
|
#define join_thread(thread) pthread_join(thread, NULL)
|
|
-#ifndef __APPLE__
|
|
+#if !defined(__APPLE__) && !defined(__HAIKU__)
|
|
#define set_thread_name(thread, name) pthread_setname_np(thread, name)
|
|
#else
|
|
#define set_thread_name(thread, name)
|
|
diff --git a/libtgvoip-ed3a899bbe26c56dc25e40730ca6d0e95f59717d/webrtc_dsp/webrtc/common_audio/signal_processing/spl_init.c b/libtgvoip-ed3a899bbe26c56dc25e40730ca6d0e95f59717d/webrtc_dsp/webrtc/common_audio/signal_processing/spl_init.c
|
|
index c9c4e65..9d93596 100644
|
|
--- a/libtgvoip-ed3a899bbe26c56dc25e40730ca6d0e95f59717d/webrtc_dsp/webrtc/common_audio/signal_processing/spl_init.c
|
|
+++ b/libtgvoip-ed3a899bbe26c56dc25e40730ca6d0e95f59717d/webrtc_dsp/webrtc/common_audio/signal_processing/spl_init.c
|
|
@@ -99,7 +99,12 @@ static void once(void (*func)(void)) {
|
|
static pthread_once_t lock = PTHREAD_ONCE_INIT;
|
|
pthread_once(&lock, func);
|
|
}
|
|
-
|
|
+#elif defined(__HAIKU__)
|
|
+#include <pthread.h>
|
|
+static void once(void (*func)(void)) {
|
|
+ static pthread_once_t lock = PTHREAD_ONCE_INIT;
|
|
+ pthread_once(&lock, func);
|
|
+}
|
|
#elif defined(_WIN32)
|
|
#include <windows.h>
|
|
|
|
--
|
|
2.16.2
|
|
|
|
|
|
From 8a0e51e26e7f6452f5b1d047703dd0acdeb9958c Mon Sep 17 00:00:00 2001
|
|
From: Gerasim Troeglazov <3dEyes@gmail.com>
|
|
Date: Mon, 21 May 2018 20:20:19 +1000
|
|
Subject: Add haiku audio input/output module
|
|
|
|
|
|
diff --git a/libtgvoip-ed3a899bbe26c56dc25e40730ca6d0e95f59717d/os/haiku/AudioInputHaiku.cpp b/libtgvoip-ed3a899bbe26c56dc25e40730ca6d0e95f59717d/os/haiku/AudioInputHaiku.cpp
|
|
new file mode 100644
|
|
index 0000000..0bf2433
|
|
--- /dev/null
|
|
+++ b/libtgvoip-ed3a899bbe26c56dc25e40730ca6d0e95f59717d/os/haiku/AudioInputHaiku.cpp
|
|
@@ -0,0 +1,52 @@
|
|
+//
|
|
+// libtgvoip is free and unencumbered public domain software.
|
|
+// For more information, see http://unlicense.org or the UNLICENSE file
|
|
+// you should have received with this source code distribution.
|
|
+//
|
|
+
|
|
+#include <stdlib.h>
|
|
+#include <stdio.h>
|
|
+#include <assert.h>
|
|
+#include <dlfcn.h>
|
|
+#include "AudioInputHaiku.h"
|
|
+#include "../../logging.h"
|
|
+#include "../../VoIPController.h"
|
|
+
|
|
+using namespace tgvoip::audio;
|
|
+
|
|
+
|
|
+AudioInputHaiku::AudioInputHaiku(std::string devID){
|
|
+ isRecording=false;
|
|
+ failed=true;
|
|
+ return;
|
|
+}
|
|
+
|
|
+AudioInputHaiku::~AudioInputHaiku(){
|
|
+}
|
|
+
|
|
+void AudioInputHaiku::Configure(uint32_t sampleRate, uint32_t bitsPerSample, uint32_t channels){
|
|
+
|
|
+}
|
|
+
|
|
+void AudioInputHaiku::Start(){
|
|
+ if(failed || isRecording)
|
|
+ return;
|
|
+
|
|
+ isRecording=true;
|
|
+}
|
|
+
|
|
+void AudioInputHaiku::Stop(){
|
|
+ if(!isRecording)
|
|
+ return;
|
|
+
|
|
+ isRecording=false;
|
|
+}
|
|
+
|
|
+void AudioInputHaiku::RunThread(){
|
|
+}
|
|
+
|
|
+void AudioInputHaiku::SetCurrentDevice(std::string devID){
|
|
+}
|
|
+
|
|
+void AudioInputHaiku::EnumerateDevices(std::vector<AudioInputDevice>& devs){
|
|
+}
|
|
diff --git a/libtgvoip-ed3a899bbe26c56dc25e40730ca6d0e95f59717d/os/haiku/AudioInputHaiku.h b/libtgvoip-ed3a899bbe26c56dc25e40730ca6d0e95f59717d/os/haiku/AudioInputHaiku.h
|
|
new file mode 100644
|
|
index 0000000..e268ee5
|
|
--- /dev/null
|
|
+++ b/libtgvoip-ed3a899bbe26c56dc25e40730ca6d0e95f59717d/os/haiku/AudioInputHaiku.h
|
|
@@ -0,0 +1,36 @@
|
|
+//
|
|
+// libtgvoip is free and unencumbered public domain software.
|
|
+// For more information, see http://unlicense.org or the UNLICENSE file
|
|
+// you should have received with this source code distribution.
|
|
+//
|
|
+
|
|
+#ifndef LIBTGVOIP_AUDIOINPUTHAIKU_H
|
|
+#define LIBTGVOIP_AUDIOINPUTHAIKU_H
|
|
+
|
|
+#include "../../audio/AudioInput.h"
|
|
+#include "../../threading.h"
|
|
+
|
|
+namespace tgvoip{
|
|
+namespace audio{
|
|
+
|
|
+class AudioInputHaiku : public AudioInput{
|
|
+
|
|
+public:
|
|
+ AudioInputHaiku(std::string devID);
|
|
+ virtual ~AudioInputHaiku();
|
|
+ virtual void Configure(uint32_t sampleRate, uint32_t bitsPerSample, uint32_t channels);
|
|
+ virtual void Start();
|
|
+ virtual void Stop();
|
|
+ virtual void SetCurrentDevice(std::string devID);
|
|
+ static void EnumerateDevices(std::vector<AudioInputDevice>& devs);
|
|
+
|
|
+private:
|
|
+ void RunThread();
|
|
+ tgvoip_thread_t thread;
|
|
+ bool isRecording;
|
|
+};
|
|
+
|
|
+}
|
|
+}
|
|
+
|
|
+#endif //LIBTGVOIP_AUDIOINPUTALSA_H
|
|
diff --git a/libtgvoip-ed3a899bbe26c56dc25e40730ca6d0e95f59717d/os/haiku/AudioOutputHaiku.cpp b/libtgvoip-ed3a899bbe26c56dc25e40730ca6d0e95f59717d/os/haiku/AudioOutputHaiku.cpp
|
|
new file mode 100644
|
|
index 0000000..c5d88b4
|
|
--- /dev/null
|
|
+++ b/libtgvoip-ed3a899bbe26c56dc25e40730ca6d0e95f59717d/os/haiku/AudioOutputHaiku.cpp
|
|
@@ -0,0 +1,54 @@
|
|
+//
|
|
+// libtgvoip is free and unencumbered public domain software.
|
|
+// For more information, see http://unlicense.org or the UNLICENSE file
|
|
+// you should have received with this source code distribution.
|
|
+//
|
|
+
|
|
+
|
|
+#include <assert.h>
|
|
+#include <dlfcn.h>
|
|
+#include "AudioOutputHaiku.h"
|
|
+#include "../../logging.h"
|
|
+#include "../../VoIPController.h"
|
|
+
|
|
+using namespace tgvoip::audio;
|
|
+
|
|
+AudioOutputHaiku::AudioOutputHaiku(std::string devID){
|
|
+ isPlaying=false;
|
|
+ failed=true;
|
|
+ return;
|
|
+}
|
|
+
|
|
+AudioOutputHaiku::~AudioOutputHaiku(){
|
|
+}
|
|
+
|
|
+void AudioOutputHaiku::Configure(uint32_t sampleRate, uint32_t bitsPerSample, uint32_t channels){
|
|
+
|
|
+}
|
|
+
|
|
+void AudioOutputHaiku::Start(){
|
|
+ if(failed || isPlaying)
|
|
+ return;
|
|
+
|
|
+ isPlaying=true;
|
|
+}
|
|
+
|
|
+void AudioOutputHaiku::Stop(){
|
|
+ if(!isPlaying)
|
|
+ return;
|
|
+
|
|
+ isPlaying=false;
|
|
+}
|
|
+
|
|
+bool AudioOutputHaiku::IsPlaying(){
|
|
+ return isPlaying;
|
|
+}
|
|
+
|
|
+void AudioOutputHaiku::RunThread(){
|
|
+}
|
|
+
|
|
+void AudioOutputHaiku::SetCurrentDevice(std::string devID){
|
|
+}
|
|
+
|
|
+void AudioOutputHaiku::EnumerateDevices(std::vector<AudioOutputDevice>& devs){
|
|
+}
|
|
diff --git a/libtgvoip-ed3a899bbe26c56dc25e40730ca6d0e95f59717d/os/haiku/AudioOutputHaiku.h b/libtgvoip-ed3a899bbe26c56dc25e40730ca6d0e95f59717d/os/haiku/AudioOutputHaiku.h
|
|
new file mode 100644
|
|
index 0000000..759e867
|
|
--- /dev/null
|
|
+++ b/libtgvoip-ed3a899bbe26c56dc25e40730ca6d0e95f59717d/os/haiku/AudioOutputHaiku.h
|
|
@@ -0,0 +1,36 @@
|
|
+//
|
|
+// libtgvoip is free and unencumbered public domain software.
|
|
+// For more information, see http://unlicense.org or the UNLICENSE file
|
|
+// you should have received with this source code distribution.
|
|
+//
|
|
+
|
|
+#ifndef LIBTGVOIP_AUDIOOUTPUTHAIKU_H
|
|
+#define LIBTGVOIP_AUDIOOUTPUTHAIKU_H
|
|
+
|
|
+#include "../../audio/AudioOutput.h"
|
|
+#include "../../threading.h"
|
|
+
|
|
+namespace tgvoip{
|
|
+namespace audio{
|
|
+
|
|
+class AudioOutputHaiku : public AudioOutput{
|
|
+public:
|
|
+ AudioOutputHaiku(std::string devID);
|
|
+ virtual ~AudioOutputHaiku();
|
|
+ virtual void Configure(uint32_t sampleRate, uint32_t bitsPerSample, uint32_t channels);
|
|
+ virtual void Start();
|
|
+ virtual void Stop();
|
|
+ virtual bool IsPlaying();
|
|
+ virtual void SetCurrentDevice(std::string devID);
|
|
+ static void EnumerateDevices(std::vector<AudioOutputDevice>& devs);
|
|
+
|
|
+private:
|
|
+ void RunThread();
|
|
+ tgvoip_thread_t thread;
|
|
+ bool isPlaying;
|
|
+};
|
|
+
|
|
+}
|
|
+}
|
|
+
|
|
+#endif //LIBTGVOIP_AudioOutputHaiku_H
|
|
--
|
|
2.16.2
|
|
|
|
|
|
From 6eccbdda41ac648e2dcb6efc851e35a78cb86e5f Mon Sep 17 00:00:00 2001
|
|
From: Gerasim Troeglazov <3dEyes@gmail.com>
|
|
Date: Mon, 21 May 2018 20:20:37 +1000
|
|
Subject: Fix for crash when calls
|
|
|
|
|
|
diff --git a/libtgvoip-ed3a899bbe26c56dc25e40730ca6d0e95f59717d/VoIPController.cpp b/libtgvoip-ed3a899bbe26c56dc25e40730ca6d0e95f59717d/VoIPController.cpp
|
|
index 2f793f3..7c2b523 100644
|
|
--- a/libtgvoip-ed3a899bbe26c56dc25e40730ca6d0e95f59717d/VoIPController.cpp
|
|
+++ b/libtgvoip-ed3a899bbe26c56dc25e40730ca6d0e95f59717d/VoIPController.cpp
|
|
@@ -291,6 +291,7 @@ VoIPController::~VoIPController(){
|
|
sendQueue->Put(PendingOutgoingPacket{0});
|
|
if(openingTcpSocket)
|
|
openingTcpSocket->Close();
|
|
+#ifndef __HAIKU__
|
|
LOGD("before join sendThread");
|
|
join_thread(sendThread);
|
|
LOGD("before join recvThread");
|
|
@@ -299,6 +300,7 @@ VoIPController::~VoIPController(){
|
|
join_thread(tickThread);
|
|
free_mutex(sendBufferMutex);
|
|
LOGD("before close socket");
|
|
+#endif
|
|
if(udpSocket)
|
|
delete udpSocket;
|
|
if(udpSocket!=realUdpSocket)
|
|
--
|
|
2.16.2
|
|
|