开源理念

深度操作系统的发展是站在上游社区的基础之上才能走到今天,除了我们自己开发了数百万行代码的原创开源项目外,我们深知只有秉承 "取之于开源,回馈予开源” 的开源理念,才能将我们自己的代码和功能改进回馈予上游开源社区,才能更好的推动全世界的开源运动向前不断发展。

上游贡献

下面是我们对上游社区的代码贡献补丁以及简要说明:

Wine:

深度科技Wine团队每天都会开发很多功能来完善Wine的API实现完整性,以更好的支持Windows应用在Linux上运行,包括QQ、迅雷、RTX等应用的支持都有deepin团队贡献的补丁,具体的贡献补丁如下:

wininet/tests: Check null pointer in InternetGetSecurityInfoByURLW
https://source.winehq.org/git/wine.git/commit/3f06a09604f8c2364dfbf6e6987d991f140544bc

winex11: Avoid deadlock when setting cursor.
https://source.winehq.org/git/wine.git/commit/48fb9d6a03a16e389b3d214d68356c52ad3310b9

wininet: Don't release connection too early.
https://source.winehq.org/git/wine.git/commit/6d6dd78e5dad164d1b313599f9afa5f65481d29d

user32: Make functions use display dc thread-safe
https://source.winehq.org/git/wine.git/commit/daa832f4bf265e459e17d487453f3cc112f6e567

kernel32/tests: Add tests for MultiByteToWideChar in DBCS codepage.
https://source.winehq.org/git/wine.git/commit/e776421232996729a0e350c31d56f696bd47e429

[PATCH] add test on host value of InternetConnectW
[PATCH] wininet/test: Add tests on host value for InternetConnectW (try 3)
Subject: hidclass.sys: Properly quit hid_device_thread when both completion event and halt event are signaled (try 4)
libwine: Make mbstowcs_dbcs return real converted chars when srclen is 1, len is 0 and *scr is partial char.
hidclass.sys: Initialize ext->irp_queue immediately after HID_CreateDevice
winedbg: Add disassembly_flavor option to use the intel disassembly style like gdb's disassembly-flavor option. (try 2)
winedbg: Add disassembly_flavor option to use the intel disassembly style like gdb's disassembly-flavor option. (try 3)
user32:-send-WM_PRINTCLIENT-when-PW_CLIENTONLY-is-set
[PATCH] wbemprox: implement Win32_DiskDrive.PNPDeviceID
kernel32: Add test MultiByteToWideChar for code page is 936. (try 3)
winex11.drv: Fix handle_wm_protools take focus error cause tooltip window and popup menu not visible
hidclass.sys: Properly quit hid_device_thread when both completion event and halt event are signaled (try 2)
hidclass.sys: Properly quit hid_device_thread when both completion event and halt event are signaled.
hidclass.sys: Properly print 80 bytes in first line when tracing ParseDescriptor.
[PATCH] svchost: Add LOAD_WITH_ALTERED_SEARCH_PATH flags to LoadLibraryEx in AddServiceElem
winedbg: Add a debug button on crash dialog, get rid of shift + right click magic (try3)
ole32: make CoWaitForMultipleHandles continue dispatch message to OLE apartment window even received WM_QUIT message
quartz: waveparser support wav file generated by ffmpeg (try3)
0001-winedbg-Add-a-debug-button-on-crash-dialog-get-rid-of-
quartz: waveparser support wav file generated by ffmpeg (try 4)
ieframe:add app: protocol support to make mshtml trigger BeforeNavigate2 event when handle app: hyperlink
kernel32: Add test MultiByteToWideChar for code page is 936. (try 3)
quartz: waveparser support wav file generated by ffmpeg
comctl32: SysDateTimePick32 control add Alt+down hot key likewindows (try 3)
[PATCH] iphlpapi: call WSASetLastError in NotifyAddrChange/NotifyRouteChange
quartz: waveparser support wav file generated by ffmpeg (try 2)
qcap: Add O_CLOEXEC flag to prevent child process from inheriting handles.

 

Metacity&Mutter:

深度窗口管理器是基于metacity和mutter开发的高级窗口窗口管理器,其中deepin-metacity是基于metacity之上开发的,deepin-wm是基于mutter之上开发的。在开发的过程中,发现了很多上游社区的bug和功能需要改进的地方,具体的补丁请见:

 

Emacs:

深度开发者之一王勇除了是Emacs中w3m-org 模块 (http://repo.or.cz/w/org-mode.git?a=blob_plain;f=lisp/org-w3m.el;hb=HEAD) 的作者外,还编写了众多的Emacs插件和维护了上百个Emacs插件的补丁。

Emacs插件:https://www.emacswiki.org/emacs/AndyStewart

Emacs补丁贡献:https://www.google.com.hk/search?q=AndyStewart+site%3Aemacswiki.org&oq=AndyStewart+site%3Aemacswiki.org&aqs=chrome..69i57.8162j0j4&sourceid=chrome&ie=UTF-8

 

PyGTK:

在用Python + Gtk+开发图形应用的时候,深度科技团队发现pangocairo库在自绘字体的时候,pangocairo创建的layout对象不会销毁,最后会导致自绘界面的有严重内存泄露的情况,深度科技团队已经发送修复补丁至pygtk 上游修复此问题,下面是具体的补丁情况:
Index: pygtk-2.24.0/pangocairo.override
===================================================================
--- pygtk-2.24.0.orig/pangocairo.override        2012-04-14 01:40:59.568703232 +0800
+++ pygtk-2.24.0/pangocairo.override        2012-04-14 01:41:05.792703324 +0800
@@ -119,10 +119,15 @@
_wrap_pango_cairo_create_layout(PyGObject *self)
{
PangoLayout *ret;
+    PyObject *py_ret;ret = pango_cairo_create_layout(PycairoContext_GET(self));
/* pygobject_new handles NULL checking */
-    return pygobject_new((GObject *)ret);
+    py_ret = pygobject_new((GObject *) ret);
+    if (ret) {
+        g_object_unref(ret);
+    }
+    return py_ret;
}
static PyObject *

该补丁已经被ArchLinux社区收录:https://lists.archlinux.org/pipermail/arch-commits/2015-September/291622.html

 

Miraclecast

https://github.com/albfan/miraclecast/tree/wip/source-impl

这个补丁主要是基于 Miraclecast 项目, 实现了实时本地影音发送端功能,让开放设备间能有双向的投屏互连功能。

 

PulseAudio

modules: support XDG_DATA_DIRS when find desktop files

https://patchwork.freedesktop.org/patch/189110/

这个补丁主要是基于 PulseAudio 项目, 实现了在查找桌面文件时支持XDG_DATA_DIRS。

 

Qt

https://codereview.qt-project.org/#/c/217601/

这个补丁主要是修复了QtQuick使用软件绘制后端, 且在高分屏下开启非整数倍缩放时,绘制的圆角矩形模糊。

 

欢迎加入

希望更多的热爱开源的开发者加入“回馈开源”的行动,推动中国开发者在国际开源社区的影响力,让中国的开源运动能够源远流长的发展下去。