From a1bf060d50da3c27b54bcc349e8b53769b39ef89 Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期二, 03 六月 2025 17:31:33 +0800
Subject: [PATCH] 1.增加Aligner --> Bonder1 | Bonder2的搬送检测逻辑; 2.优化搬送逻辑。搬送要分优先考虑的主类型和次要类型。一种情况,如果不分主次,一直搬G1, 等到Bonder1和Bonder2都放了G1, Aligner也放了G1, Bonder1和Bonder2需要的G2就过不来了(在Aligner阻塞了)。另外从生产效率上来说,也应该根据需求,尽快使其中一台Bonder的两片玻璃匹配以使其能尽快开始生产加工。
---
SourceCode/Bond/Servo/Context.cpp | 25 +++++++++++++++++++------
1 files changed, 19 insertions(+), 6 deletions(-)
diff --git a/SourceCode/Bond/Servo/Context.cpp b/SourceCode/Bond/Servo/Context.cpp
index 96aa4b1..d71cf34 100644
--- a/SourceCode/Bond/Servo/Context.cpp
+++ b/SourceCode/Bond/Servo/Context.cpp
@@ -4,6 +4,7 @@
CContext::CContext()
{
+ m_onReleaseCallback = nullptr;
m_nRef = 0;
m_nRetCode = 0;
m_hEvent = ::CreateEvent(NULL, TRUE, FALSE, NULL);
@@ -20,6 +21,11 @@
DeleteCriticalSection(&m_criticalSection);
}
+void CContext::setOnRelease(ONRELEASECALLBACK fOnRelease)
+{
+ m_onReleaseCallback = fOnRelease;
+}
+
int CContext::addRef()
{
Lock();
@@ -32,13 +38,20 @@
int CContext::release()
{
Lock();
- m_nRef--;
- BOOL bDelete = m_nRef == 0;
- Unlock();
+ if (m_nRef > 0) {
+ m_nRef--;
+ BOOL bRefCount0 = m_nRef == 0;
+ Unlock();
- int nRef = m_nRef;;
- if (bDelete) delete this;
- return nRef;
+ if (bRefCount0 && m_onReleaseCallback != nullptr) {
+ m_onReleaseCallback(this);
+ }
+ }
+ else {
+ Unlock();
+ }
+
+ return m_nRef;
}
void CContext::setRetCode(int code)
--
Gitblit v1.9.3